如何获取r中几个选定行的总和?

时间:2018-02-10 02:32:03

标签: r dataframe sum aggregate

我有一个像这样的数据框df

         id  StateCode Year  Data
1      AB123        AZ 1960  100
2      XY567        AZ 1961  200
3      CB666        AZ 1962  300
4      PT788        AZ 1963  400
5      AG999        AZ 1964  500

我想根据行ID获取df$Data的总和。例如,id“AB123”,id“CB666”和id“XY567”的总和应返回600.我该怎么做? 谢谢!

3 个答案:

答案 0 :(得分:2)

我们可以使用dplyr

执行此操作
library(dplyr)
df1 %>%
    filter(id %in% c("AB123", "CB666", "XY567")) %>% #filter the rows
    pull(Data) %>% #pull the column 'Data'
    sum #get the sum
#[1] 600

答案 1 :(得分:1)

我们可以使用%in%上的id过滤数据框,然后对Data列求和。

sum(dat[dat$id %in% c("AB123", "CB666", "XY567"), ]$Data)
# [1] 600

数据

dat <- read.table(text = "         id  StateCode Year  Data
1      AB123        AZ 1960  100
2      XY567        AZ 1961  200
3      CB666        AZ 1962  300
4      PT788        AZ 1963  400
5      AG999        AZ 1964  500",
                  header = TRUE, stringsAsFactors = FALSE)

答案 2 :(得分:1)

基础R的一种方式:

ids <- c("AB123", "XY567", "CB666")

with(subset(df, id %in% ids), sum(Data))

#[1] 600

数据:

text <- "         id  StateCode Year  Data
1      AB123        AZ 1960  100
2      XY567        AZ 1961  200
3      CB666        AZ 1962  300
4      PT788        AZ 1963  400
5      AG999        AZ 1964  500"

df <- read.table(text = text, header = TRUE, stringsAsFactors = FALSE)