所以我有一张表d,看起来像这样
id trial V1 V2 V3 V4
101 1 1 1 1 1
101 2 10 12 13 20
101 3 3 3 2 9
102 1 1 1 1 1
102 2 10 12 11 11
102 3 9 8 7 6
103 1 1 1 1 1
103 2 2 3 4 5
103 3 11 12 13 14
...
基本上我需要创建新行,可能在新表中,显示每个变量(V1,V2,V3,V4)的试验3和试验1之间的差异,可能是这样的: 如果是新表:
id V1 V2 V3 V4
101 2 2 1 8
102 8 7 6 5
103 10 12 13 14
...
我在考虑使用dplyr并通过id聚合它,并且每列都是差异,但不确定dplyr是否可以这样做,所以现在我有点卡住了。任何想法都将不胜感激。
答案 0 :(得分:2)
假设您在每个ID中始终有1,2,3个试验 - 您可以在summarize_each
中定义一个函数并使用dplyr
library(dplyr)
myfun <- function(x) { x[[3]]-x[[1]] }
df %>%
group_by(id) %>%
summarize_each(funs(myfun)) %>%
select(-trial)
id V1 V2 V3 V4
(int) (int) (int) (int) (int)
1 101 2 2 1 8
2 102 8 7 6 5
3 103 10 11 12 0