在R中按列统计值出现次数并将另一列唯一值转为列表
在R中按动物分组统计并生成唯一名称列表
首先构造你提供的示例数据:
df <- data.frame( animal = c("dog", "cat", "dog", "cat", "cat", "rabbit"), name = c("Airbud", "Tom", "Marley", "Salem", "Salem", "bugs"), stringsAsFactors = FALSE )
使用dplyr包可以轻松实现你要的功能,代码如下:
library(dplyr) # 生成包含列表列的结果 result <- df %>% group_by(animal) %>% summarize( name_list = list(unique(name)), # 提取每组的唯一名称并保存为列表 animal_count = n() # 统计每组的总数量 ) %>% ungroup() # 取消分组状态 # 查看结果 print(result)
如果想要让name_list显示成你示例中的字符串格式(比如['Airbud','Marley']),可以用下面的代码调整:
library(dplyr) # 生成字符串形式的名称列表 result_formatted <- df %>% group_by(animal) %>% summarize( name_list = paste0("['", paste(unique(name), collapse = "','"), "']"), animal_count = n() ) %>% ungroup() print(result_formatted)
核心逻辑说明:
group_by(animal)指定按animal列分组summarize里,unique(name)提取每组的不重复名称,用list()包装成列表列;n()直接统计每组的总行数- 若要格式化显示成字符串形式的列表,用
paste()完成拼接即可
内容的提问来源于stack exchange,提问作者DavidWebb
相关产品推荐
相关产品推荐

