我有一个包含成对值的长df。我需要计算时点之间的差额。
ID Sample_ID Treatment Timepoint Score
Amu A Contr 0 10
Amu A Contr 1 5
Amu A Treat 0 11
Amu A Treat 1 7
Amu B Contr 0 9
Amu B Contr 1 4
Amu B Treat 0 10
Amu B Treat 1 6
我想做的是按ID、sample_ID、处理进行分组,然后计算时点"1“和"0”之间的分数差值。我应该得到:
Amu_A_Contr = (5-10)
Amu_A_Treat = (7-11)
etc.
我尝试使用以下代码:
group_by(ID,Sample_ID, Treatment)%>%
mutate(Diff = lead(Score) - Score )
但由于某种原因,分组功能失败了,因此,如果有人能帮上忙,那就太好了。
谢谢:)
发布于 2022-11-29 15:42:20
我要做的就是把时间点转到列上,然后差别就很简单了
library(dplyr)
library(tidyr)
df <- data.frame(ID = rep('AMU', 8),
Sample_ID = c(rep('A', 4), rep('B', 4)),
Treatment = c('Contr', 'Contr', 'Treat', 'Treat', 'Contr', 'Contr', 'Treat', 'Treat'),
Timepoint = rep(c(0, 1), 4),
Score = c(10, 5, 11, 7, 9, 4, 10, 6)
)
df %>%
pivot_wider(id_cols = c(ID, Sample_ID, Treatment),
names_from = 'Timepoint',
values_from = 'Score',
names_glue = "time_{Timepoint}") %>%
mutate(diff = time_1 - time_0)
https://stackoverflow.com/questions/74614855
复制相似问题