如何对 data.frame 列值求和?
Posted
技术标签:
【中文标题】如何对 data.frame 列值求和?【英文标题】:How to sum data.frame column values? 【发布时间】:2012-03-29 09:24:49 【问题描述】:我有一个包含几列的数据框;一些数字和一些字符。 如何计算特定列的总和?我已经搜索过这个,我看到了很多函数(sum
、cumsum
、rowsum
、rowSums
、colSums
、@ 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 列值求和?的主要内容,如果未能解决你的问题,请参考以下文章