微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何获得元素/列,即使它是NA且在R中轻按

如何解决如何获得元素/列,即使它是NA且在R中轻按

我有一个像这样的数据集:

df <- data.frame("y"=c(2010,2011,2012,2013,2010,2012),"x"=c(1,2,1,4,4),"a"=c(5,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

解决方法

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。