添加数据框列中的所有值,其中每个单元格是另一个向量

Add All Values In A Data Frame Column Where Each Cell Is Another Vector

我的数据框结构如下:

MonthYear                 Total
 01/2020           c(1, 1, 1, 1, 1...)
 02/2020           c(2, 14, 6, 12, 91...)
   ...                     ...

如何制作这个数据框,以便我可以对每个向量中的所有值求和并将它们再次存储在数据框中?所以,假设第一个向量的总和是 100,我怎样才能得到这个总和并将它存储在我的数据框中?

到目前为止,我已尝试进行聚合,但返回了一个错误。我的聚合看起来像这样: > aggregate(df$total ~ df$MonthYear, df, FUN = sum,但是,在执行此操作时,出现向量列的空变量错误,我不确定如何解决此问题。

假设 Total 是一个数值向量列表,我们可以通过对列表的每个元素应用 sum 函数来获得值的总和:

library(tidyverse)

tibble(
  MonthYear = c("01/2020", "02/2020"),
  Total = list(rep(1, 100), c(2,14,6,12,91))
) %>%
  mutate(Total = map_dbl(Total, sum))

# A tibble: 2 x 2
  MonthYear Total
  <chr>     <dbl>
1 01/2020     100
2 02/2020     125

这也是一个简单的基础 R 解决方案。

df$Total <- lapply(lapply(df$Total, unlist), sum)

输出

  MonthYear    Total
1   01/2020 20.50097
2   02/2020 352.6011
3   03/2020 112.8006

数据

df <- structure(list(
  MonthYear = c("01/2020", "02/2020", "03/2020"),
  Total = list(
    c(
      2.35268858028576, 0.749567511957139, 9.35646147234365, 1.57167825149372, 6.47057350026444
    ),
    c(
      19.7490084229503,  6.70629078173079, 49.3116769392509, 12.3336209286936, 29.0551994147245,
      40.7369665871374, 54.9186405551154, 73.569026516052, 22.1695927530527, 44.051097095944
    ),
    c(
      8.96286227740347, 14.6749551640823, 14.2950962111354, 16.624439577572, 17.731322417967,
      19.0528914798051, 11.0123344371095, 10.4467153223231
    )
  )
),
row.names = c(NA, -3L),
class = "data.frame")