我找到了大部分答案:Change values in row based on a column value r。有两点不同:我想根据分类变量的测试替换值,我想指定我想要替换值的范围。我正在处理8600多行和170列的数据帧。
以下是一个例子: -
x = data.frame(c("Jan", "Feb", "March", "April"),
c(9,3,4,6), c(8, 12,9,11), c(10, 9, 7, 0.6))
names(x) = c("Month","VAR1","VAR2", "VAR3")
我想用NA
替换月份为“三月”或“四月”的VAR2和VAR3(不是VAR1)的所有值。
我试过:x[x$Month==c("March", "April"), ] <- data.frame('x', NA, 3:4)
但是我收到了错误
Warning message:
In `[<-.factor`(`*tmp*`, iseq, value = c(1L, 1L)) :
invalid factor level, NA generated
和print(x)
给出:
Month VAR1 VAR2 VAR3
1 Jan 9 8 10
2 Feb 3 12 9
3 <NA> NA 3 1
4 <NA> NA 4 1
有一些明显的编程初学者语法错误我无法通过!
答案 0 :(得分:2)
尝试:
x[x$Month %in% c("March", "April"), c("VAR2", "VAR3")] = NA