我有一個包含兩個元素的串列,其中value每個變陣列合都有一個感興趣的變數country和gender.
# 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
我想value為每個可能的組合計算(跨串列元素)的平均值,gender并country考慮到并非所有組合都在串列的所有元素中(在該示例中,第二個元素沒有值對于法國的男性。
我期望的是這樣的:
country gender value
1 Spain M 125
2 Spain F 100
3 France M 5
4 France F 150
知道如何處理嗎?
uj5u.com熱心網友回復:
A %>%
bind_rows() %>%
group_by(country, gender) %>%
summarise(value = sum(value) / length(A))
uj5u.com熱心網友回復:
您在這里需要的是complete來自{tidyr}.
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, 確保每個串列都有 forM和Ffor的所有行gender,然后填寫當前國家/地區(您也可以指定應該出現的國家/地區)。然后確保那NA是0相反的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/481203.html
