gpt4 book ai didi

r - 基于其他列变量的 R 长格式行之间的差异

转载 作者:行者123 更新时间:2023-12-05 08:29:24 24 4
gpt4 key购买 nike

我有一个 R 数据框,例如:

df <- data.frame(ID = rep(c(1, 1, 2, 2), 2), Condition = rep(c("A", "B"),4), 
Variable = c(rep("X", 4), rep("Y", 4)),
Value = c(3, 5, 6, 6, 3, 8, 3, 6))

ID Condition Variable Value
1 1 A X 3
2 1 B X 5
3 2 A X 6
4 2 B X 6
5 1 A Y 3
6 1 B Y 8
7 2 A Y 3
8 2 B Y 6

我想获得每个 VariableIDCondition (A - B) 的每个值之间的差异,同时保持长格式.这意味着该值必须每两行出现一次,如下所示:

 ID Condition Variable Value diff_value
1 1 A X 3 -2
2 1 B X 5 -2
3 2 A X 6 0
4 2 B X 6 0
5 1 A Y 3 -5
6 1 B Y 8 -5
7 2 A Y 3 -3
8 2 B Y 6 -3

到目前为止,我设法使用 dplyr 包做了一些相对类似的事情,但如果我想保持长格式,它就不起作用了:

df_long_example %>%
group_by(Variable, ID) %>%
mutate(diff_value = lag(Value, default = Value[1]) -Value)

# A tibble: 8 x 5
# Groups: Variable, ID [4]
ID Condition Variable Value diff_value
<dbl> <chr> <chr> <dbl> <dbl>
1 1 A X 3 0
2 1 B X 5 -2
3 2 A X 6 0
4 2 B X 6 0
5 1 A Y 3 0
6 1 B Y 8 -5
7 2 A Y 3 0
8 2 B Y 6 -3

最佳答案

你不必使用lag,而是使用diff:

df %>% 
group_by(Variable,ID) %>%
mutate(diff = -diff(Value))

输出:

# A tibble: 8 x 5
# Groups: Variable, ID [4]
ID Condition Variable Value diff
<dbl> <chr> <chr> <dbl> <dbl>
1 1 A X 3 -2
2 1 B X 5 -2
3 2 A X 6 0
4 2 B X 6 0
5 1 A Y 3 -5
6 1 B Y 8 -5
7 2 A Y 3 -3
8 2 B Y 6 -3

关于r - 基于其他列变量的 R 长格式行之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70652460/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com