【发布时间】:2021-10-30 04:00:53
【问题描述】:
我有一个看起来或多或少像这样的数据框(但更长且具有更多 ObsDOY 值):
Position ObsDOY Offset Lin_Flux
<chr> <dbl> <dbl> <dbl>
1 Inter-row (unplanted) 122 1 10.7
2 Tree row 122 1 10.3
3 Tree row 122 1 16.2
4 Inter-row (planted) 122 1 9.08
5 Inter-row (trenched) 122 1 3.57
6 Inter-row (trenched) 122 1 12.3
7 Inter-row (trenched) 122 1 9.36
8 Inter-row (trenched) 122 1 7.73
9 Inter-row (trenched) 122 1 10.1
10 Inter-row (trenched) 122 1 7.14
11 Inter-row (planted) 143 1 4.44
我想添加一个新列,该列是每个位置的 Lin_Flux 与与 Position = "Inter-row (trenched)" 对应且具有相同 ObsDOY 的 Lin_flux 值的平均值之间的差异@(一年中的观察日) .换句话说:
newcol <- Lin_flux[ObsDOY=x] - mean(Lin_flux[ObsDOY=x AND Position = "Inter-row (trenched)"])
我会知道如何使用dplyr 包手动实现这一点,以过滤掉子集,然后使用它们,但我非常感谢关于更优雅解决方案的建议,因为我将不断添加更多观察并做不想每次都重写脚本以包含新的ObsDOY 值。
【问题讨论】:
-
能否请您提供一个手动计算的预期输出示例,并粘贴来自
dput(your_dataframe)输出的样本数据副本。
标签: r dataframe indexing data-manipulation