r - 有没有一种方法或内置的 R 函数可以对列表中重复名称的值求和?

标签 r list duplicates names

假设我有这个列表:

values <- list(2, 8, 3, 21, 54, 2, 43, 31)
countries <- list('US', 'UK', 'China', 'US', 'Russia', 'UK', 'US', 'China')
names(values) <- countries

然后,值看起来像:('US' = 2, 'UK' = 8, 'China' = 3, 'US' = 21, 'Russia' = 54, 'UK' = 2, 'US' = 43, 'China' = 31)
R 中是否有内置函数或一些简短的方法来添加重复项的值?
意思是,让值变成:('UK' = 10, 'China' = 34, 'Russia' = 54, 'US' = 66)(虽然顺序无关紧要)

最佳答案

使用 tidyverse 的选项

library(dplyr)
library(tibble)
library(tidyr)
enframe(values) %>%
    unnest(c(value)) %>% 
    group_by(name) %>% 
    summarise(value = sum(value)) %>%
    deframe %>% 
    as.list
#$China
#[1] 34

#$Russia
#[1] 54

#$UK
#[1] 10

#$US
#[1] 66

或使用 base R
as.list(tapply(unlist(values), names(values), sum))
#$China
#[1] 34

#$Russia
#[1] 54

#$UK
#[1] 10

#$US
#[1] 66

关于r - 有没有一种方法或内置的 R 函数可以对列表中重复名称的值求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61063423/

相关文章:

mysql - 如何在 laravel 5.4 中返回同一列中的所有重复行?

datetime - 如何查找列中的最高(最新)和最低(最早)日期?

list - 在 LISP 中引入点对的原因是什么?

regex - 在由 "."分隔的字符上通过正则表达式拆分数据框列

python - 使用格式打印多个列表

python - 从项目列表中进行项目分组的替代方法

android-studio - 错误:APK打包期间文件重复

c# - 从此代码片段中删除重复项

r - 在 R 中实现 nextafter 功能

r - 使用 if/else 语句根据使用 R 的行的起始字母和字符串长度为列插入小数