关于 r:根据列值更改行中的值并替换特定列范围

Change values in row based on a column value and replacing specified column range

我发现我的大部分答案是:根据列值 r 更改行中的值。有两个区别:我想根据分类变量的测试来替换值,并且我想指定要替换值的范围。我正在使用 8600 奇数行和 170 列的数据框。

这是一个例子:-

1
2
3
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 替换月份为 "March" 或 "April" 的 VAR2 和 VAR3(不是 VAR1)的所有值。

我试过:x[x$Month==c("March","April"), ] <- data.frame('x', NA, 3:4) 但我得到错误

1
2
3
Warning message:
In `[<-.factor`(`*tmp*`, iseq, value = c(1L, 1L)) :
  invalid factor level, NA generated

print(x) 给出:

1
2
3
4
5
  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
x[x$Month %in% c("March","April"), c("VAR2","VAR3")] = NA