我不知道如何设置这个最简单的方法。我有一个名为 Test 的数据框,其中有一列包含一些 NA 值。现在我想将满足以下条件的所有字段设置为 1:
- 行数 > 60
- 如果特定字段中存在 NA
到目前为止我有:
Test$MyColumn[is.na(Test$MyColumn)] <- 1
这可行,但我不知道如何设置第二个条件:-/
最佳答案
如果在将元素更改为 1
之前必须同时满足这两个条件在 bb
这是另一种选择:
aa <- 1:10
bb <- c(1,NA,6,4,NA,9,1,NA,2,5)
cc <- c(100,102,104,NA,78,54,99,NA,22,0)
dd <- data.frame(aa,bb,cc)
dd
dd$bb[4:nrow(dd)][is.na(dd$bb[4:nrow(dd)])] <- 1
dd
这是原始数据集:
aa bb cc
1 1 1 100
2 2 NA 102
3 3 6 104
4 4 4 NA
5 5 NA 78
6 6 9 54
7 7 1 99
8 8 NA NA
9 9 2 22
10 10 5 0
这是修改后的数据集:
aa bb cc
1 1 1 100
2 2 NA 102
3 3 6 104
4 4 4 NA
5 5 1 78
6 6 9 54
7 7 1 99
8 8 1 NA
9 9 2 22
10 10 5 0
这会改变 NA
如果有 NA
,则在所有列的第 4-10 行中在 bb
的第 4-10 行中:
aa <- 1:10
bb <- c(1,NA,6,4,NA,9,1,NA,2,5)
cc <- c(100,102,104,NA,78,54,99,NA,22,0)
dd <- data.frame(aa,bb,cc)
dd
dd[4:nrow(dd),1:3][is.na(dd$bb[4:nrow(dd)]),] <- 1
dd
aa bb cc
1 1 1 100
2 2 NA 102
3 3 6 104
4 4 4 NA
5 1 1 1
6 6 9 54
7 7 1 99
8 1 1 1
9 9 2 22
10 10 5 0
这会改变 NA
如果有 NA
,则在所有列的第 4-10 行中在 bb
的第 4-10 行中然后它会更改所有剩余的 NA
在 bb
:
aa <- 1:10
bb <- c(1,NA,6,4,NA,9,1,NA,2,5)
cc <- c(100,102,104,NA,78,54,99,NA,22,0)
dd <- data.frame(aa,bb,cc)
dd
dd[4:nrow(dd),1:3][is.na(dd$bb[4:nrow(dd)]),] <- 1
dd$bb[is.na(dd$bb)] <- 1
dd
aa bb cc
1 1 1 100
2 2 1 102
3 3 6 104
4 4 4 NA
5 1 1 1
6 6 9 54
7 7 1 99
8 1 1 1
9 9 2 22
10 10 5 0
关于R:为满足两个条件的某些数据设置一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21877832/