【问题标题】:Add multiple columns in R representing different categories在 R 中添加代表不​​同类别的多列
【发布时间】:2018-09-28 23:26:09
【问题描述】:

我在 R 中有以下数据框:

Kingdom  D1 D2 D4 H1 H5
Animals  2   4  4  6  7
Bacteria 4   3  1  2  4
Viruses  1   4  4  5  6

我试图在保持第一列的同时获得每一列的总和,即使每一行都有一个唯一的名称。在每个其他列相加后,我想将第一列上的行重命名为“总计”。

所需的输出应如下所示:

Kingdom  D1 D2 D4 H1 H5
Totals    7 11  9 13 17

我在 R 中尝试了以下命令: sum_df

但是,此命令不保留第一列,我不知道该怎么做。它还以列格式为我提供了所有总数,而不是保持行格式。 D1 7 D2 11 D4 9 H1 13 H5 17

我已尝试使用 transpose t() 函数将这些列转换回一行,但我仍然不知道如何将第一列保留为我显示的所需输出。任何帮助是极大的赞赏!提前致谢!

【问题讨论】:

  • 类似colSums(df[, -1])?
  • data.frame(Kingdom = 'Totals', rbind(colSums(d1[sapply(d1, is.numeric)], na.rm = TRUE)))
  • janitor::adorn_totals(df) 将添加一个“总计”行,之后您可以根据需要对原始数据进行子集化处理。
  • 考虑将您的“王国”行更改为数据框标题。这样,您的所有列向量都将属于整数类,从而使您的编码更加容易。
  • 感谢大家的意见! :) @Jaap - 你的回答很完美,非常感谢!

标签: r


【解决方案1】:

我知道您已经得到了答案,但这里有另一个使用 dplyr 包的解决方案。我喜欢这个解决方案,因为代码很好读。

library(dplyr)

df = data.frame(Kingdom = c("Animals", "Bacteria", "Viruses"),
                  D1 = c(2,4,1),
                  D2 = c(4,3,4),
                  D4 = c(6,2,5),
                  H1 = c(6,2,5),
                  H5 = c(7,4,6))

total_df = df %>%
  summarise(Kingdom = "Totals",
            sumD1 = sum(D1),
            sumD2 = sum(D2),
            sumD4 = sum(D4),
            sumH1 = sum(H1),
            sumH5 = sum(H5))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    • 2021-07-15
    • 2015-09-20
    • 2022-11-16
    • 1970-01-01
    相关资源
    最近更新 更多