【问题标题】:Add All Values In A Data Frame Column Where Each Cell Is Another Vector在每个单元格是另一个向量的数据框列中添加所有值
【发布时间】:2022-01-18 07:45:16
【问题描述】:

我有一个结构如下的数据框:

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,但是,在执行此操作时,我收到向量列的 Null Variable 错误,不知道如何解决此问题。

【问题讨论】:

  • 有没有一个vector 值对应一个MonthYear 值的情况?

标签: r data-science data-cleaning


【解决方案1】:

这也是一个简单的基本 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")

【讨论】:

    【解决方案2】:

    假设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
    

    【讨论】:

      猜你喜欢
      • 2019-05-04
      • 1970-01-01
      • 1970-01-01
      • 2018-07-31
      • 1970-01-01
      • 2018-12-29
      • 2022-06-28
      • 2019-10-04
      相关资源
      最近更新 更多