【问题标题】:When column reaches certain amount of rows whit 0 values change values to Na当列达到一定数量的值为 0 的行时,将值更改为 Na
【发布时间】:2021-06-16 19:27:54
【问题描述】:

我正在尝试使用以下规则将数据框中的某些 0 值更改为 Na:当某个站点 * 年份组合重复所有计数值为 0 的物种时,值应该是 Na。我有列:站点、年份、计数和物种。如果某年某地点没有数据,则计数应为 NA,如 ss 2000,但如果某年某地点有数据,如 pp 2001,则青蛙计数应保持为 0。真实数据集很大,所以我不能只选择我想要更改的行。想法怎么做?在这个表中只有 ss 2000 是空的,因此 count 应该是 Na。

site year count species 
ss   2000 0     frogs  
ss   2000 0     dogs   
ss   2000 0     cats   
pp   2000 1     frogs  
pp   2000 2     dogs   
pp   2000 0     cats   
ss   2001 0     frogs  
ss   2001 1     dogs   
ss   2001 0     cats   

【问题讨论】:

    标签: r dataframe if-statement replace


    【解决方案1】:
    do.call(rbind,
      by(df,list(df$site,df$year),function(x){
        if (all(x$count==0)){
          x$count=NA
        }
        x
      })
    )
    
      site year count species
    4   pp 2000     1   frogs
    5   pp 2000     2    dogs
    6   pp 2000     0    cats
    1   ss 2000    NA   frogs
    2   ss 2000    NA    dogs
    3   ss 2000    NA    cats
    7   ss 2001     0   frogs
    8   ss 2001     1    dogs
    9   ss 2001     0    cats
    

    【讨论】:

    • 非常感谢!我真的在为自己有限的技能苦苦挣扎!
    猜你喜欢
    • 1970-01-01
    • 2021-09-25
    • 2021-10-25
    • 1970-01-01
    • 2019-05-30
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 2020-10-14
    相关资源
    最近更新 更多