簡體   English   中英

列表中所有數據框中的一列(具有相同名稱)的總和

[英]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我應該使用sapplylapply函數?

你可以使用colSums ,即

do.call(rbind, lapply(l, function(i)colSums(i['X1'])))
#     X1
#[1,]  6
#[2,]  8

這里有一個sapply選項,我們將列'X1' Extractmatrix ,然后執行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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM