列表中不同组合的平均值(缺少一些组合)
Mean of differnt combinations in a list (missing some of the combinations)
我有一个包含两个元素的列表,其中我对变量 country
和 gender
.
的每个组合都有一个感兴趣的变量 value
# Toy example
A <- list()
A[[1]] <- data.frame(country=c("Spain", "Spain", "France", "France"),
gender= c("M", "F", "M", "F"),
value = c(100,125,10,200))
A[[2]] <- data.frame(country=c("Spain", "Spain", "France"),
gender=c("M", "F", "F"),
value = c(150,75,100))
数据如下所示:
[[1]]
country gender value
1 Spain M 100
2 Spain F 125
3 France M 10
4 France F 200
[[2]]
country gender value
1 Spain M 150
2 Spain F 75
3 France F 100
我想为 gender
和 country
的每个可能组合计算 value
的平均值(跨列表的元素),考虑到没有所有组合在列表的所有元素中(在该示例中,第二个元素在法国没有 Males 的值。
我期望的是这样的:
country gender value
1 Spain M 125
2 Spain F 100
3 France M 5
4 France F 150
知道如何处理吗?
这里需要的是 {tidyr}
的 complete
。
A %>%
map(tidyr::complete, country,
gender = c("M", "F"), fill = list(value = 0)) %>%
bind_rows() %>%
group_by(country, gender) %>%
summarise(value = mean(value)) %>%
ungroup()
首先是 map
,确保每个列表都包含 M
的所有行和 gender
的 F
的所有行,然后用当前的国家/地区完成(您可以还指定应出席的国家)。然后确保 NA
改为 0
。
A %>%
bind_rows() %>%
group_by(country, gender) %>%
summarise(value = sum(value) / length(A))
我有一个包含两个元素的列表,其中我对变量 country
和 gender
.
value
# Toy example
A <- list()
A[[1]] <- data.frame(country=c("Spain", "Spain", "France", "France"),
gender= c("M", "F", "M", "F"),
value = c(100,125,10,200))
A[[2]] <- data.frame(country=c("Spain", "Spain", "France"),
gender=c("M", "F", "F"),
value = c(150,75,100))
数据如下所示:
[[1]]
country gender value
1 Spain M 100
2 Spain F 125
3 France M 10
4 France F 200
[[2]]
country gender value
1 Spain M 150
2 Spain F 75
3 France F 100
我想为 gender
和 country
的每个可能组合计算 value
的平均值(跨列表的元素),考虑到没有所有组合在列表的所有元素中(在该示例中,第二个元素在法国没有 Males 的值。
我期望的是这样的:
country gender value
1 Spain M 125
2 Spain F 100
3 France M 5
4 France F 150
知道如何处理吗?
这里需要的是 {tidyr}
的 complete
。
A %>%
map(tidyr::complete, country,
gender = c("M", "F"), fill = list(value = 0)) %>%
bind_rows() %>%
group_by(country, gender) %>%
summarise(value = mean(value)) %>%
ungroup()
首先是 map
,确保每个列表都包含 M
的所有行和 gender
的 F
的所有行,然后用当前的国家/地区完成(您可以还指定应出席的国家)。然后确保 NA
改为 0
。
A %>%
bind_rows() %>%
group_by(country, gender) %>%
summarise(value = sum(value) / length(A))