在R中添加代表不​​同类别的多个列

时间:2018-04-18 16:16:26

标签: r

我在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

我正在尝试获取每列的总和,同时保持第一列,即使每行都有唯一的名称。我想在添加每个其他列之后将第一列上的行重命名为“totals”。

所需的输出应如下所示:

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

我在R中尝试了以下命令:     sum_df< -colSums(df [sapply(df,is.numeric)],na.rm = TRUE)

但是这个命令没有维护第一列,我不知道该怎么做。它还以列格式给出了所有总计,而不是保留行格式。     D1 7     D2 11     D4 9     H1 13     H5 17

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

1 个答案:

答案 0 :(得分:2)

我知道你已经得到了答案,但这是使用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))