如何在R中使用group_by()统计变量频次并生成对应dataframe?
使用group_by()统计出生地频率的解决方案
这事儿很简单,用dplyr包的group_by()搭配summarise()就能轻松实现你要的转换,我给你一步步说明:
1. 先准备你的数据源
首先我们先把你提供的表A转换成R的数据框(如果还没准备好的话):
# 构造表A的数据框 df <- data.frame( Person = c("Nick", "Alex", "Mark", "Jane", "Bob", "Ruth", "Steven"), Birthplace = c("Berlin", "Berlin", "Toronto", "New York", "Toronto", "New York", "Berlin") )
2. 核心分组统计代码
加载dplyr包后,用管道操作符%>%串联分组和统计操作:
library(dplyr) # 分组并计算频率 result_df <- df %>% # 按Birthplace列分组 group_by(Birthplace) %>% # 统计每组的行数,命名为Frequency summarise(Frequency = n())
3. 查看结果
运行上面的代码后,打印result_df就能得到你想要的表B:
# A tibble: 3 × 2 Birthplace Frequency <chr> <int> 1 Berlin 3 2 New York 2 3 Toronto 2
简单解释下:group_by(Birthplace)会把数据按照出生地分成不同的组,summarise(Frequency = n())则会统计每个组里的观测数量(也就是每个人的记录数),最终生成你需要的“出生地-频率”对应表。
内容的提问来源于stack exchange,提问作者NickA
相关产品推荐
相关产品推荐

