[英]sum of one column (with same name) in all data frames in a list
如何將列表中所有數據框中的一個特定列相加並將它們放入新數據框中? 一個小例子是:
A <- data.frame(matrix( nrow = 2, ncol = 2))
B <- data.frame(matrix( nrow = 2, ncol = 2))
A[,] <- 3
B[,] <- 4
l <- list(A,B)
所以,假設我想在我的列表中總結所有列“X1”並放入一個數據框(向量,因為只有一行)。 然后,該數據幀的第一行應為6(3 + 3),第二行為8(4 + 4)。
在實際數據中,列表中有18個數據幀,每個數據幀中要求和的列具有不同的長度。
Mabye我應該使用sapply
或lapply
函數?
你可以使用colSums
,即
do.call(rbind, lapply(l, function(i)colSums(i['X1'])))
# X1
#[1,] 6
#[2,] 8
這里有一個sapply
選項,我們將列'X1' Extract
到matrix
,然后執行colSums
colSums(sapply(l, `[[`, 'X1'))
#[1] 6 8
或者使用purrr
map
library(purrr)
library(dplyr)
map_dbl(l, ~ .x %>%
pull(X1) %>%
sum)
#[1] 6 8
如果需要它作為data.frame
map_dfr(l, ~ .x %>%
summarise(X1 = sum(X1)))
# X1
#1 6
#2 8
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.