我有以下数据框
one <- c('one',NA,NA,NA,NA,'two',NA,NA)
group1 <- c('A','A','A','A','B','B','B','B')
group2 <- c('C','C','C','D','E','E','F','F')
df = data.frame(one, group1,group2)
> df
one group1 group2
1 one A C
2 <NA> A C
3 <NA> A C
4 <NA> A D
5 <NA> B E
6 two B E
7 <NA> B F
8 <NA> B F
我想获得的非缺失观测值的计数one
的每个组合group1
和group2
。
在Pandas中,我会使用groupby(['group1','group2']).transform
,但是如何在R中做到这一点呢?原始数据帧为大。
预期输出为:
> df
one group1 group2 count
1 one A C 1
2 <NA> A C 1
3 <NA> A C 1
4 <NA> A D 0
5 <NA> B E 1
6 two B E 1
7 <NA> B F 0
8 <NA> B F 0
非常感谢!
与data.table
:
setDT(df)
df[,count_B:=sum(!is.na(one)),by=c("group1","group2")]
给出:
one group1 group2 count_B
1: one A C 1
2: NA A C 1
3: NA A C 1
4: NA A D 0
5: NA B E 1
6: two B E 1
7: NA B F 0
8: NA B F 0
这个想法是对真实值求和(一旦转换为整数,则为1),NA
而在按group1
和分组时,B不是group2
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句