R:为满足两个条件的某些数据设置一个值
我不知道如何用最简单的方法来设置。我有一个名为Test的数据框架,其中一列包含一些NA值。现在,我想为满足以下条件的所有字段设置一个值1:R:为满足两个条件的某些数据设置一个值,r,dataframe,R,Dataframe,我不知道如何用最简单的方法来设置。我有一个名为Test的数据框架,其中一列包含一些NA值。现在,我想为满足以下条件的所有字段设置一个值1: 行数>60 如果特定字段中有NA 到目前为止,我已经: Test$MyColumn[is.na(Test$MyColumn)] <- 1 Test$MyColumn[is.na(Test$MyColumn)]您可以这样设置行数: Test$RowNumber <- 1:nrow(Test) Test$RowNumber 60]如果在bb中将一
Test$MyColumn[is.na(Test$MyColumn)] <- 1
Test$MyColumn[is.na(Test$MyColumn)]您可以这样设置行数:
Test$RowNumber <- 1:nrow(Test)
Test$RowNumber 60]如果在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$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
如果bb
的第4-10行中存在NA
,则所有列的第4-10行中的NA
将发生变化:
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
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
您可以通过以下方式获得所需的结果:
Test[60:nrow(Test),][is.na(Test[60:nrow(Test),])]<-1
Test[60:nrow(Test),][is.na(Test[60:nrow(Test),])]您是指第一个条件吗?为什么要依赖于行数?这看起来很脆弱。您的意思是,您只想交换数字60以上的行中的NA值吗?还是要更改以上第60行的所有值和所有NA值?
Test[60:nrow(Test),][is.na(Test[60:nrow(Test),])]<-1