R 根据不同列中的值将一列中的值替换为NAs
我有以下数据集:R 根据不同列中的值将一列中的值替换为NAs,r,R,我有以下数据集: A_1 <- c(2, 3, 3, 2, 4) A_2 <- c(5, 5, 6, 4, 4) A_3 <- c(9, 9, 8, 7, 6) B_1 <- c(1, 0, 0, 0, 0) B_2 <- c(1, 1, 1, 0, 0) B_3 <- c(0, 0, 0, 1, 1) df <- cbind(A_1, A_2, A_3, B_1, B_2, B_3) > df A_1 A_2 A_3 B_1 B_2 B
A_1 <- c(2, 3, 3, 2, 4)
A_2 <- c(5, 5, 6, 4, 4)
A_3 <- c(9, 9, 8, 7, 6)
B_1 <- c(1, 0, 0, 0, 0)
B_2 <- c(1, 1, 1, 0, 0)
B_3 <- c(0, 0, 0, 1, 1)
df <- cbind(A_1, A_2, A_3, B_1, B_2, B_3)
> df
A_1 A_2 A_3 B_1 B_2 B_3
[1,] 2 5 9 1 1 0
[2,] 3 5 9 0 1 0
[3,] 3 6 8 0 1 0
[4,] 2 4 7 0 0 1
[5,] 4 4 6 0 0 1
对于大型数据集,最有效的方法是什么?谢谢 像这样的东西怎么样
df[,1:3][df[,4:6]==1] <- NA
df
A_1 A_2 A_3 B_1 B_2 B_3
[1,] NA NA 9 1 1 0
[2,] 3 NA 9 0 1 0
[3,] 3 NA 8 0 1 0
[4,] 2 4 NA 0 0 1
[5,] 4 4 NA 0 0 1
像这样的东西怎么样
df[,1:3][df[,4:6]==1] <- NA
df
A_1 A_2 A_3 B_1 B_2 B_3
[1,] NA NA 9 1 1 0
[2,] 3 NA 9 0 1 0
[3,] 3 NA 8 0 1 0
[4,] 2 4 NA 0 0 1
[5,] 4 4 NA 0 0 1
df[,1:3][df[,4:6]==1]太棒了-非常感谢。我想我也可以做df[,grep(“A”,colnames(df))][df[,grep(“B”,colnames(df))]==1]太棒了-非常感谢。我想我也可以做df[,grep(“A”,colnames(df))][df[,grep(“B”,colnames(df))]==1]