根据列值更改行中的值并替换指定的列范围

时间:2014-03-23 01:11:11

标签: r excel replace dataframe

我找到了大部分答案: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

有一些明显的编程初学者语法错误我无法通过!

1 个答案:

答案 0 :(得分:2)

尝试:

x[x$Month %in% c("March", "April"), c("VAR2", "VAR3")] = NA