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")