如何对data.frame列值求和?


76

我有一个包含几列的数据框;一些数字和一些字符。如何计算特定列的总和?我GOOGLE了这一点,我看到无数的功能(sumcumsumrowsumrowSumscolSumsaggregateapply),但我不能让这一切的感觉。

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

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

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

Answers:


105

您可以使用sum(people$Weight)

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

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


2
当我这样做时,我得到:[1] NA。我查看了此列的数据,最后一行有NA,这是为什么?
用户

10
是的,这就是原因。如果需要,可以忽略NA sum(people$Weight,na.rm=TRUE)(可以在中阅读有关此选项的信息?sum)。
mathematical.coffee

3

要对值求和,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)

1

当您在栏中输入“ NA”值时,

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

1

在结束后订购:

order(colSums(people),decreasing=TRUE)

如果超过20列以上

order(colSums(people[,c(5:25)],decreasing=TRUE) ##in case of keeping the first 4 columns remaining.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.