我有一个像这样的数据框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.我该怎么做?
谢谢!
答案 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)