首先,这里有一些名为df1的示例数据:
Response.Redirect()
我现在应该提一下,这些数据中的某些“最终”时间点得分缺失了。我只对缺少最终时间点的观察感兴趣。让我们选择这些观察结果,调用新的df df2:ID Time Score1 Score2 SumScore
1 Baseline 1 2 3
1 Midpoint 2 2 4
1 Final 3 2 5
2 Baseline 2 2 4
2 Midpoint 5 2 7
2 Final 6 2 8
从这里开始,我使用df2<-df1%>%filter(is.na(SumScore)==T,Time=="Final")
传播数据,以创建一个如下所示的新数据框(df3):
tidyr::spread()
我想要完成的是确定最后一次观察(在基线时间点和中点时间点之间),然后将该观察结果带到df1中缺少最终时间点得分的观察结果。对于某些观察,有可能缺少中点分数。
由于
答案 0 :(得分:0)
使用dplyr
和tidyr
,这样的内容可能就是您要找的......
df4 <- df1 %>% select(-c(Score1,Score2)) %>%
spread(key=Time,value=SumScore) %>%
mutate(finalScore=coalesce(Final,Midpoint,Baseline))
df4
ID Baseline Final Midpoint finalScore
1 1 3 5 4 5
2 2 4 8 7 8