在R数据框中使用行总和创建新列

时间:2019-09-28 16:56:13

标签: r dataframe

我正在尝试在R中做一些我认为非常简单的事情:添加一个带有总计的新列。

我创建了一个新的数据集,并遵循此suggestion,但事实证明它计算出的总和是错误的。然后,我遵循了另一种可行的方法,但是无法将结果附加为列。

@media

reprex package(v0.3.0)于2019-09-28创建

2 个答案:

答案 0 :(得分:0)

问题是使用级联“总计”将导致length 1比行数大

IUS_12_toy[,13] <- rowSums(IUS_12_toy)

有了dplyr,我们也可以

library(dplyr)
IUS_12_toy %>%
     mutate(Total = rowSums(.))

或与purrr

library(purrr)
IUS_12_toy %>%
     mutate(Total = reduce(., `+`))

此外,如果我们使用索引创建列,则默认情况下,data.frame将对make.names/nake.unique进行完整性检查,并附加一个字符作为前缀,即此处为“ V”

我们可以直接使用列名作为字符串

IUS_12_toy["Total"] <- rowSums(IUS_12_toy)

答案 1 :(得分:0)

运行?adorn_totals,您会在文档的第一句中看到一个解释:

  

此函数排除输入data.frame的第一列,假设它是不求和的描述性变量。

哪个占总金额不符合您的预期。

如果行中有一个标识符-我希望可以使行总和有意义-您可以将其添加到第一列,然后照常进行。

在这里,我在第一列中添加一个新变量year

library(dplyr)
IUS_12_toy %>%
  mutate(year = 2016:2018) %>%
  select(year, everything()) %>% # move it to the first column position
  adorn_totals("col")

哪个会产生预期的结果。