如何在变量之间求和分类变量

52 浏览
0 Comments

如何在变量之间求和分类变量

这个问题已经有了答案

计算每个组中行数的数量

计算向量中值为x的元素的数量

在R中以更快的方式计算不同id在列中的特征数

我的数据集看起来像这样

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日
0
0 Comments

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日创建。

0
0 Comments

可以使用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

0