考虑R中的下列数据:
df <- data.frame(Industry = c("Agriculture", "Fishery", "Industry"),
Value = c(10,20,30))
假设我想把“农业”和“渔业”的值相加(10 + 20 = 30)。例如,我可以这样做:
df$Value[df$Industry == "Agriculture"] + df$Value[df$Industry == "Fishery"]
然而,相反,我想创建清单“农业”和“渔业”,然后总结价值。因为在我的例子中,我有一个很大的data.frame,这将使它更加容易。怎么做?
发布于 2022-02-02 12:28:34
你可以用%in%
df <- data.frame(Industry = c("Agriculture", "Fishery", "Industry"),
Value = c(10, 20, 30))
print(df)
industries_to_sum <- c("Agriculture", "Fishery")
print(sum(df[df$Industry %in% industries_to_sum,]$Value))
输出:
Industry Value
1 Agriculture 10
2 Fishery 20
3 Industry 30
[1] 30
发布于 2022-02-02 13:53:31
为了完整起见,采用潮汐方法:
df <- data.frame(Industry = c("Agriculture", "Fishery", "Industry"),
Value = c(10, 20, 30))
df %>% filter(Industry %in% c("Agriculture", "Fishery")) %>%
summarise(sumValue=sum(Value))
输出:
sumValue
1 30
发布于 2022-02-02 13:23:00
一种data.table()
方法
library(data.table)
DT <- data.table(Industry = c("Agriculture", "Fishery", "Industry"),
Value = c(10,20,30))
DT[Industry != "Industry"][, sum(Value)]
输出
> [1] 30
https://stackoverflow.com/questions/70955473
复制相似问题