Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R-满足条件时替换多个字段中的值_R - Fatal编程技术网

R-满足条件时替换多个字段中的值

R-满足条件时替换多个字段中的值,r,R,我有一个如下所示的数据框: field1 field2 field3 x 1 2 y 3 4 x na na 我的目标是在field1='x'时,将field2中的所有值替换为A,将field3中的所有值替换为B。我写了两行来做这件事,想看看是否有一种方法可以在一行中做到这一点 df$field2[df$field1=='x'] <- 'A' df$field3[df$field1=='x'] <- 'B

我有一个如下所示的数据框:

 field1  field2  field3
   x     1      2
   y     3      4
   x     na     na
我的目标是在field1='x'时,将field2中的所有值替换为A,将field3中的所有值替换为B。我写了两行来做这件事,想看看是否有一种方法可以在一行中做到这一点

df$field2[df$field1=='x'] <- 'A'

df$field3[df$field1=='x'] <- 'B'
df$field2[df$field1=='x']base

dfbase

df使用dplyr:

df %>% 
  mutate(field2 = case_when(field1 == "x" ~ "A", 
                            TRUE ~ field2),
         field3 = case_when(field1 == "x" ~ "B", 
                            TRUE ~ field3))
不是一条线,而是干净的

使用dplyr:

df %>% 
  mutate(field2 = case_when(field1 == "x" ~ "A", 
                            TRUE ~ field2),
         field3 = case_when(field1 == "x" ~ "B", 
                            TRUE ~ field3))

不是一条线,而是干净的

您可以使用
矩阵
进行替换

df1[df1$field1 == "x", 2:3] <- t(matrix(c("A", "B"), 2, 2))
df1
#   field1 field2 field3
# 1      x      A      B
# 2      y      3      4
# 3      x      A      B

df1[df1$field1==“x”,2:3]您可以使用
矩阵进行替换

df1[df1$field1 == "x", 2:3] <- t(matrix(c("A", "B"), 2, 2))
df1
#   field1 field2 field3
# 1      x      A      B
# 2      y      3      4
# 3      x      A      B
df1[df1$field1==“x”,2:3]
df1 <- structure(list(field1 = c("x", "y", "x"), field2 = c("A", "3", 
"A"), field3 = c("B", "4", "B")), row.names = c(NA, -3L), class = "data.frame")