如何对 data.frame 列值求和?

Posted

技术标签:

【中文标题】如何对 data.frame 列值求和?【英文标题】:How to sum data.frame column values? 【发布时间】:2012-03-29 09:24:49 【问题描述】:

我有一个包含几列的数据框;一些数字和一些字符。 如何计算特定列的总和?我已经搜索过这个,我看到了很多函数(sumcumsumrowsumrowSumscolSums、@ 987654326@, apply) 但我无法理解这一切。

例如,假设我有一个数据框people,其中包含以下列

people <- read(
  text = 
    "Name Height Weight
    Mary 65     110
    John 70     200
    Jane 64     115", 
  header = TRUE
)
…

如何获得所有权重的总和?

【问题讨论】:

【参考方案1】:

你可以使用sum(people$Weight)

sum 对向量求和,people$Weight 从您的数据框中检索权重列。

注意 - 您可以使用 ?sum?colSums 等获得内置帮助(顺便说一下,colSums 会为您提供每列的总和)。

【讨论】:

当我这样做时,我得到:[1] NA。我查看了这一列的数据,最后一行有 NA,这是为什么呢? 是的,这就是原因。如果您愿意,可以通过 sum(people$Weight,na.rm=TRUE) 忽略 NA(您可以在 ?sum 中阅读有关此选项的信息)。【参考方案2】:

当列中有“NA”值时,

sum(as.numeric(JuneData1$Account.Balance), na.rm = TRUE)

【讨论】:

【参考方案3】:

在 colsum 之后订购:

order(colSums(people),decreasing=TRUE)

如果超过 20 列

order(colSums(people[,c(5:25)],decreasing=TRUE) ##in case of keeping the first 4 columns remaining.

【讨论】:

【参考方案4】:

要对data.frame 中的值求和,首先需要将它们提取为向量。

有几种方法可以做到:

# $ operatior
x <- people$Weight
x
# [1] 65 70 64

或者使用类似于矩阵的[, ]

x <- people[, 'Weight']
x
# [1] 65 70 64

一旦你有了向量,你就可以使用任何向量到标量的函数来聚合结果:

sum(people[, 'Weight'])
# [1] 199

如果您的数据中有 NA 值,则应指定 na.rm 参数:

sum(people[, 'Weight'], na.rm = TRUE)

【讨论】:

以上是关于如何对 data.frame 列值求和?的主要内容,如果未能解决你的问题,请参考以下文章

对 data.frame 或矩阵中的行求和

如何对一个数据框中的列值求和并将结果添加为另一个数据框中的列?

根据一列值将 data.frame 一分为二

如何在不使用 R 中的表的情况下对分类值的实例求和?

如何在R中向一个data frame指定位置插入一列或一行

如何逐行求和?