rem*_*emo 1 r subtraction dplyr
我想从每个组的第一行中减去距离列的每一行。
我的数据如下:
structure(list(Group = c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L,
2L, 3L, 3L, 3L, 3L, 3L), Distance = c(0.05, 0.084, 0.06, 0.03,
0.034, 0.0534, 0.034, 0.23, 0.34, 0.6435, 0.6346, 0.234, 0.246,
0.4, 0.7)), class = "data.frame", row.names = c(NA, -15L))
Run Code Online (Sandbox Code Playgroud)
我尝试过以下代码:
Data <- Data %>%
group_by(Group) %>%
mutate(Difference=Distance - dplyr:: lag(Distance))
Run Code Online (Sandbox Code Playgroud)
但是,如何调整代码,以便对于每个组,从每个组的第一行中的值中减去“距离”列中的值?因此,对于第 1 组,这意味着从 0.05 中减去 0.084、0.06、0.03 和 0.034 的值。
更新:查看评论: 非常感谢@Gregor Thomas:
library(dplyr)
Data %>%
group_by(Group) %>%
mutate(Distance = Distance - Distance[1])
Run Code Online (Sandbox Code Playgroud)
好吧,现在我也看到了。这与 Gregor Thomas 在评论中提供的解决方案相同dplyr!
Group Distance
<int> <dbl>
1 1 0
2 1 0.034
3 1 0.0100
4 1 -0.02
5 1 -0.016
6 2 0
7 2 -0.0194
8 2 0.177
9 2 0.287
10 2 0.590
11 3 0
12 3 -0.401
13 3 -0.389
14 3 -0.235
15 3 0.0654
Run Code Online (Sandbox Code Playgroud)
第一个答案:
这是另一种dplyr选择:
library(dplyr)
Data %>%
group_by(Group) %>%
mutate(Distance = Distance - Distance[row_number() == 1])
Run Code Online (Sandbox Code Playgroud)
Group Distance
<int> <dbl>
1 1 0
2 1 0.034
3 1 0.0100
4 1 -0.02
5 1 -0.016
6 2 0
7 2 -0.0194
8 2 0.177
9 2 0.287
10 2 0.590
11 3 0
12 3 -0.401
13 3 -0.389
14 3 -0.235
15 3 0.0654
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1510 次 |
| 最近记录: |