hee*_*ter 3 casting r reshape melt
我已经四处寻找适当的答案,但我认为这个问题尚未得到解答。本质上,我有一个长格式的数据框,如下所示:
ID event_type event_value
123 A 1.1
123 A 1.2
123 A "Hello"
234 B "Hello"
456 A 2.8
Run Code Online (Sandbox Code Playgroud)
存在具有多种值的多种事件类型。我想做的是重塑数据,使其看起来像这样
ID event_type_A_1 event_type_A_2 event_type_A_3 event_type_B_1
123 1.1 1.2 "Hello" NA
234 NA NA NA "Hello"
456 2.8 NA NA NA
Run Code Online (Sandbox Code Playgroud)
这样新列就可以延伸到任何给定患者的最长事件类型,其余的则用 NA 填充。spread()
我已经用and搞砸了cast()
,但由于某种原因它只是没有点击。谢谢!
您可以使用dplyr
和 来完成此操作tidyr
。技巧是使用和group_by
添加组内索引。 mutate
row_number
library(dplyr)
library(tidyr)
df <- data_frame(ID = c(123,123,123,234,456),
event_type = c("A","A","A","B","A"),
event_value = c(1.1, 1.2, "Hello", "Hello", 2.8))
df %>%
group_by(ID) %>%
mutate(sub_ID = row_number()) %>%
unite("ID_type", event_type, sub_ID,remove = TRUE) %>%
spread(ID_type, event_value)
Run Code Online (Sandbox Code Playgroud)
打破dplyr
链条:
row_number()
event_type
andsub_ID
并unite
删除原始列spread()
将 ID_type 放入具有以下值的列中event_value
归档时间: |
|
查看次数: |
1380 次 |
最近记录: |