如何解决使用tidyr对分组数据进行长距离到宽转换
我是一名新秀,试图找出使用tidyr进行长距离转换的最佳方法。
我的数据如下:
ID Case Case_date
1 A 1-Sep
1 B 2-Sep
1 C 3-Sep
2 D 4-Sep
3 E 5-Sep
3 F 6-Sep
我希望它看起来像这样:
ID Case_1 Case_1_date Case_2 Case_2_date Case_3 Case_3_date
1 A 1-Sep B 2-Sep C 3-Sep
2 D 4-Sep NULL NULL NULL NULL
3 E 5-Sep F 6-Sep NULL NULL
感谢您的帮助!我认为pivot_wider是我这里解决方案的一部分,但我不太明白。
解决方法
使用tidyverse
,您可以执行以下操作。列举每个ID
,然后pivot_wider
的案子,以采用宽格式。
library(tidyverse)
df %>%
group_by(ID) %>%
mutate(N = row_number()) %>%
pivot_wider(id_cols = ID,names_from = N,values_from = c(Case,Case_date))
输出
ID Case_1 Case_2 Case_3 Case_date_1 Case_date_2 Case_date_3
<dbl> <chr> <chr> <chr> <chr> <chr> <chr>
1 1 A B C 1-Sep 2-Sep 3-Sep
2 2 D NA NA 4-Sep NA NA
3 3 E F NA 5-Sep 6-Sep NA
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。