R 根据数据框中某列中的条件,删除同一行其他列中的数据
我想知道当trt=C时,如何从一行中的所有其他列中删除所有数据。我对一个适用于许多列的解决方案感兴趣R 根据数据框中某列中的条件,删除同一行其他列中的数据,r,R,我想知道当trt=C时,如何从一行中的所有其他列中删除所有数据。我对一个适用于许多列的解决方案感兴趣 A <- sample(1:100,9) B <- sample(1:100,9) trt <- rep(c("A", "B", "C"),3) df <- data.frame(trt, A, B) df trt A B 1 A 32 43 2 B 29 79 3 C 94 95 4 A 100 24 5 B 63 38 6
A <- sample(1:100,9)
B <- sample(1:100,9)
trt <- rep(c("A", "B", "C"),3)
df <- data.frame(trt, A, B)
df
trt A B
1 A 32 43
2 B 29 79
3 C 94 95
4 A 100 24
5 B 63 38
6 C 80 92
7 A 22 98
8 B 61 56
9 C 69 81
to look like this:
trt A B
1 A 90 50
2 B 84 100
3 C NA NA
4 A 42 17
5 B 61 43
6 C NA NA
7 A 78 84
8 B 27 36
9 C NA NA
类似于
if(df$trt=="C") {
df[,i] <- NA
}
我们可以使用[选择要更改的行和列,即
df[df$trt == 'C', -1] <- NA
您还可以使用它来选择特定的列
df[df$trt == 'C', -c(1, 3)] <- NA
我们可以使用[选择要更改的行和列,即
df[df$trt == 'C', -1] <- NA
您还可以使用它来选择特定的列
df[df$trt == 'C', -c(1, 3)] <- NA
这是一个函数为is.na的溶液这是一个函数为is.na的溶液 哈奇,但工作
Hacky,但很有用!是的!很简单:是的!很简单:为什么不在if语句中更改df$trt[i]?我只是在if条件下检查trt是否等于C。df[df$trt=='C',-1]为什么不在if语句中更改df$trt[i]?我只是在if条件下检查trt是否等于C。df[df$trt=='C',-1]
df[-1] <- lapply(df[-1], `is.na<-`, df$trt == "C")
df
# trt A B
#1 A 28 90
#2 B 80 70
#3 C NA NA
#4 A 9 78
#5 B 5 14
#6 C NA NA
#7 A 16 62
#8 B 4 4
for (i in 1:nrow(df)) {
if (df$trt[i] == "C") {
df[i, ] <- NA
df$trt[i] <- "C"
}
}