给出以下样本数据集:
df<-data.frame(year=c("1990","1990","1990","1991","1991","1991","1992","1992","1992"), C2=LETTERS[1:3], C3=rnorm(1:9))
df
year C2 C3
1 1990 A -0.973627230
2 1990 B -0.755867016
3 1990 C 0.016505689
4 1991 A -0.004353502
5 1991 B 0.525895816
6 1991 C -0.882487930
7 1992 A -0.206509950
8 1992 B 0.192527583
9 1992 C 0.935712021
我是否可以针对year
的每个唯一值执行以下操作:
在C3
和C2 == B
时添加C2 == C
的值,然后在C3
时除以C2==A
的值?
因此,对于每个year
,我都会获得(B+C)/A
感谢您的帮助。
答案 0 :(得分:3)
您可以使用 data.table 。只需在解释时完全编写代码。
library(data.table)
setDT(df)[, sum(C3[C2 %in% c("B", "C")]) / C3[C2 == "A"], by = year]
# year V1
# 1: 1990 -0.08157762
# 2: 1991 4.44625385
# 3: 1992 13.03606921
如果 dplyr 是你的包,那么这里是在 dplyr 中完成的:
library(dplyr)
group_by(df, year) %>%
summarise(out = sum(C3[C2 %in% c("B", "C")]) / C3[C2 == "A"])