我在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()函数将这些列转换回一行,但我仍然不知道如何将第一列保持为我所显示的所需输出。任何帮助是极大的赞赏!提前谢谢!
答案 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))