我有以下按监测地点和采样年份组织的水化合物年平均值数据集(5200 个条目):
data= data.frame(Site_ID=c(1, 1, 1, 2, 2, 2, 3, 3, 3), Year=c(2000, 2001, 2002, 2001, 2002, 2003, 2002, 2003, 2004), AnnualMean=c(1.1, 1.2, 1.1, 2.1, 2.6, 3.1, 2.7, 2.6, 1.9))
我想在此数据框中添加一个新列,其中包含每个监测站点的给定年份和定义引用年份之间的年平均值之间的差异。每个监测站点共享相同的引用年份(此处为 2002 年)。结果表将如下所示:
data= data.frame(Site_ID=c(1, 1, 1, 2, 2, 2, 3, 3, 3), Year=c(2000, 2001, 2002, 2001, 2002, 2003, 2002, 2003, 2004), AnnualMean=c(1.1, 1.2, 1.1, 2.1, 2.6, 3.1, 2.7, 2.6, 1.9), Diff_ref=c(0.0, 0.1, NA, -0.5, NA, 0.5, NA, -0.1, -0.8)
非常感谢 !
最佳答案
一 dplyr
解决方案可能是:
data %>%
group_by(Site_ID) %>%
mutate(Diff_ref = ifelse(Year == 2002, NA, AnnualMean - AnnualMean[Year == 2002]))
Site_ID Year AnnualMean Diff_ref
<dbl> <dbl> <dbl> <dbl>
1 1 2000 1.1 0
2 1 2001 1.2 0.1000
3 1 2002 1.1 NA
4 2 2001 2.1 -0.5
5 2 2002 2.6 NA
6 2 2003 3.1 0.5
7 3 2002 2.7 NA
8 3 2003 2.6 -0.1
9 3 2004 1.9 -0.8
关于r - 在 R 中添加包含具有固定引用值的差异的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61325924/