如何在变量之间求和分类变量
如何在变量之间求和分类变量
这个问题已经有了答案:
我的数据集看起来像这样
df<-read.table(text="group, race 1, 1 1, 1 1, 4 2, 1 2, 3 2, 4 3, 1 2, 1 1, 1", header=T, sep=",")
我想获得每个组的每个种族数量的总和。我尝试使用聚合函数,但没有成功。
我希望有一个类似于这样的输出:
group race total 1 1 2 1 4 1 2 1 2 . . . 3 1 1
admin 更改状态以发布 2023年5月21日
library(tidyverse) df<-tribble(~"group", ~"race", 1, 1, 1, 1, 1, 4, 2, 1, 2, 3, 2, 4, 3, 1, 2, 1, 1, 1) df %>% count(group, race) #> # A tibble: 6 x 3 #> group race n #>#> 1 1 1 3 #> 2 1 4 1 #> 3 2 1 2 #> 4 2 3 1 #> 5 2 4 1 #> 6 3 1 1
本示例使用reprex包(v0.2.1)于2019年05月20日创建。
可以使用aggregate()
在基础中完成:
with(df, aggregate(list(count=race), by=list(group=group,race=race), FUN=length)) #> group race count #> 1 1 1 3 #> 2 2 1 2 #> 3 3 1 1 #> 4 2 3 1 #> 5 1 4 1 #> 6 2 4 1
或者使用ave()
(如果您想保留数据结构并只添加列total
):
df$total <- ave(df$race, df[,c("group","race")], FUN=length) #> group race total #> 1 1 1 3 #> 2 1 1 3 #> 3 1 4 1 #> 4 2 1 2 #> 5 2 3 1 #> 6 2 4 1 #> 7 3 1 1 #> 8 2 1 2 #> 9 1 1 3