如何汇总data.frame中列的所有值?

Use*_*ser 65 r sum aggregate-functions dataframe

我有一个包含多个列的数据框; 一些数字和一些字符.如何计算特定列的总和?我GOOGLE了这一点,我看到无数的功能(sum,cumsum,rowsum,rowSums,colSums,aggregate,apply),但我不能让这一切的感觉.

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

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

我如何得到所有重量的总和?

mat*_*fee 85

你可以使用sum(people$Weight).

sum总结一个向量,并people$Weight从数据框中检索权重列.

注-您可以通过使用获得内置的帮助?sum,?colSums等等.(顺便说一下,colSums会给你每一列的总和).

  • 是的,这就是原因.你可以通过`sum(people $ Weight,na.rm = TRUE)`来忽略这些NA(你可以在`?sum`中读到这个选项). (7认同)
  • 当我这样做时,我得到:`[1] NA`。我查看了这一列的数据,最后一行是 NA,这是为什么? (2认同)

Rei*_*ica 12

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

有几种方法可以做到这一点:

# $ operatior
x <- people$Weight
x
# [1] 65 70 64
Run Code Online (Sandbox Code Playgroud)

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

x <- people[, 'Weight']
x
# [1] 65 70 64
Run Code Online (Sandbox Code Playgroud)

获得向量后,您可以使用任何向量到标量函数来聚合结果:

sum(people[, 'Weight'])
# [1] 199
Run Code Online (Sandbox Code Playgroud)

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

sum(people[, 'Weight'], na.rm = TRUE)
Run Code Online (Sandbox Code Playgroud)