【问题标题】:how to obtain an element/column even when it's NA with tapply in R即使在 R 中使用 tapply 为 NA 时,如何获取元素/列
【发布时间】:2021-01-04 08:06:36
【问题描述】:

我有一个这样的数据集:

df <- data.frame("y"=c(2010,2011,2012,2013,2010,2012,2010,2011,2012),"x"=c(1,2,1,1,2,2,4,4,4),"a"=c(5,3,0,2,3,0,2,3,0))



    y  x a
1 2010 1 5
2 2011 2 3
3 2012 1 0
4 2013 1 2
5 2010 2 3
6 2012 2 0
7 2010 4 2
8 2011 4 3
9 2012 4 0

我想为每个“y”和“x”求和“a”,使用:

sum <- tapply(df$a,list(df$y,df$x),sum)

即:

      1  2  4
2010  5  3  2
2011 NA  3  3
2012  0  0  0
2013  2 NA NA

即使我在 df 的 x 列中没有值 3,我也如何获得“3”列? 像这样的:

      1  2   3   4
2010  5  3  NA   2
2011 NA  3  NA   3
2012  0  0  NA   0
2013  2 NA  NA  NA

【问题讨论】:

    标签: r na tapply


    【解决方案1】:

    x 列设为factorlevels,其中包括x 列的minmax 之间的所有值。

    df$x <- factor(df$x, levels = seq(min(df$x), max(df$x)))
    tapply(df$a,list(df$y,df$x),sum)
    
    #      1  2  3  4
    #2010  5  3 NA  2
    #2011 NA  3 NA  3
    #2012  0  0 NA  0
    #2013  2 NA NA NA
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-22
      • 2011-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-10
      相关资源
      最近更新 更多