我不知道如何设置这是最简单的方法。我有一个名为Test的数据框,其中一列包含一些NA值。现在我想为满足以下条件的所有字段设置值1:
到目前为止,我有:
Test$MyColumn[is.na(Test$MyColumn)] <- 1
这有效,但我不知道如何设置第二个条件: - /
答案 0 :(得分:4)
如果在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
的第4-10行中有NA
,则会在所有列的第4-10行中更改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
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
的第4-10行中有NA
,则会更改所有列的第4-10行中的bb
,然后它会更改NA
中的所有剩余bb
{1}}:
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
答案 1 :(得分:3)
你可以像这样设置rownumber:
Test$RowNumber <- 1:nrow(Test)
然后条件是:
Test$MyColumn[is.na(Test$MyColumn) & Test$RowNumber>60] <- 1
答案 2 :(得分:1)
您可以获得所需的结果
Test[60:nrow(Test),][is.na(Test[60:nrow(Test),])]<-1