优雅的方式确定时间点之间的最后观察?

时间:2017-04-20 16:48:35

标签: r dplyr tidyr

首先,这里有一些名为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中缺少最终时间点得分的观察结果。对于某些观察,有可能缺少中点分数。

由于

1 个答案:

答案 0 :(得分:0)

使用dplyrtidyr,这样的内容可能就是您要找的......

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