R-根据ID和日期变量创建新列

时间:2020-08-07 08:00:21

标签: r

下午好,我希望有人可以帮助我解决以下问题。我的数据如下:

data <- read.table(text="
Level Score ID Date
1 30 A 5/10/2019        
2 50 A 5/11/2019
2 60 B 26/10/2019
4 90 B 26/11/2019
3 70 B 10/02/2020
4 92 C 29/09/2019
2 51 D 19/02/2020
4 95 D 19/05/2020
", header= TRUE)

我想根据“ ID”和“ Date”列将格式从长改成宽。我想以以下数据框格式结束:

data_wide <- read.table(text="
ID  Level_Time_Pre Level_Time_Post Level_Time_M3 Score_Time_Pre Score_Time_Post Score_Time_M3 
A 1 2 NA 30 50 NA   
B 2 4 3 60 90 70
C 2 NA NA 92 NA NA
D 2 NA 4 51 NA 95
", header= TRUE)

预措施总是在后措施之前一个月,而M3措施总是在后措施之后三个月左右。并非每个人都具有所有度量,有些只有前,有些只有发布,有些只有M3,其他只有三项中的两项,还有全部三项......此外,现实生活中的ID变量更加复杂,我大约有8500观察值(因此,我不能使用“ ifelse(ID = A,...)”)。我想我首先需要根据'日期'列创建一个因子变量('时间'),然后才能使用 dcast 函数。但是,我不知道如何最好地创建此变量。我尝试过:data %>% group_by(ID) %>% mutate (Time = paste("Pre", "Post", "M3"))。这将在新列的每个单元格中显示Pre,Post,M3 ...

希望您能帮助我,谢谢!

0 个答案:

没有答案