r - 在 R 中添加包含具有固定引用值的差异的新列

标签 r dplyr

我有以下按监测地点和采样年份组织的水化合物年平均值数据集(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/

相关文章:

替换缺失值

r - 如何使用 'data.table' 添加缺失日期并填充组内的值

r - 按组 pmap 列以获得加权行均值

r - 如何创建数字循环?

ggplot 中大集合的随机定性颜色

r - 当行的其余部分重复时,如何通过对一列的值求和来合并表

R、dplyr 和雪 : how to parallelize functions which use dplyr

r - 根据R中字符串中不同位置的不同条件进行过滤

r - 如何用ggplot绘制堆积的条形图?

python - 如何在 Python 中导入 r 包