【问题标题】:How to sum data.frame column values?如何对 data.frame 列值求和?
【发布时间】: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
)
…

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

【问题讨论】:

    标签: r dataframe sum aggregate-functions


    【解决方案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)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-09-01
          • 2020-07-24
          • 2011-08-31
          • 2018-12-30
          • 2015-11-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多