我之前在“一列中的值取决于另一列的值” 方面获得了很好的帮助,我希望q1中2的所有值在q2中给出0。建议之一解决了这个问题:df$q2[df$q1 == 2] <- 0
现在我想知道当仅在q1 = 2和q2 = NA时要替换时该怎么做。因为有时候q1为2时q2中会有一个值,所以我想保留。
提前谢谢! :)
a <- rep(c(300,450), each=c(3,3))
q1 <- rep(c(1,1,2,1,1,2),2)
q2 <- c(100,40,"",80,30,"" , 45,78,"",20,58,"")
df <- cbind(a,q1,q2)
df <- as.data.frame(df)
df
a q1 q2
1 300 1 100
2 300 1 40
3 300 2 30
4 450 1 80
5 450 2 35
6 450 2
7 300 1 45
8 300 1 78
9 300 2
10 450 1 20
11 450 1 58
12 450 2
答案 0 :(得分:0)
要表示空值,可以使用NA
代替""
a <- rep(c(300,450), each=c(3,3))
q1 <- rep(c(1,1,2,1,1,2),2)
q2 <- c(100,40,NA,80,30,NA, 45,78,NA,20,58,NA)
df <- data.frame(a,q1,q2, stringsAsFactors = FALSE)
然后您可以通过添加其他条件来检查NA
值
df$q2[df$q1 == 2 & is.na(df$q2)] <- 0
但是,当前代码可能需要处理数据
df$q2[df$q1 == 2 & df$q2 == ""] <- 0
答案 1 :(得分:0)
这里是data.table
library(data.table)
setDT(df)[q1 == 2 & is.na(q2), q2 := 0]