Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:为满足两个条件的某些数据设置一个值_R_Dataframe - Fatal编程技术网

R:为满足两个条件的某些数据设置一个值

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的数据框架,其中一列包含一些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
    中将一个元素更改为
    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