我试图回答多少个观察具有一定顺序的问题。例如我的数据如下:
CaseNo Code
1111 RF
1111 AV
1111 RF
2222 AV
2222 TF
3333 AV
我需要输出:
CaseNo 1 2 3
1111 RF AV RF
2222 AV RF NULL
3333 AV NULL NULL
所以我可以匹配后面的序列。
我已经对数据进行了排序,因此代码的顺序正确,但是我需要将这些代码合并为一行。
我读到散布函数是一个好方法,但这似乎只适用于值,但是我的代码列是字符。我还尝试使用以下方法来进行group_by和nest函数:
spread_df <- df %>% group_by(CaseNo) %>% nest()
这将它带回CaseNo,Code,但是Code列中的代码在列表中,我似乎无法拆分。
有没有一种方法可以简单地带回我需要的输出?还是我发现序列时忽略的任何其他方法?
谢谢
答案 0 :(得分:1)
按“ CaseNo”分组后,我们可以创建一个序列,然后使用spread
将其转换为“宽”格式
library(tidyverse)
df %>%
group_by(CaseNo) %>%
mutate(rn = row_number()) %>%
spread(rn, Code)