首页 > 解决方案 > 在 R 中的字符向量上使用扩展函数

问题描述

我试图回答有多少观察具有一定顺序的问题。例如我的数据如下所示:

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 列中的代码在我似乎无法拆分的列表中。

有没有办法简单地恢复我需要的输出?或者我在发现序列时忽略的任何其他方法?

谢谢

标签: rdataframegroup-by

解决方案


我们可以在按“CaseNo”分组后创建一个序列,然后使用 将spread其转换为“宽”格式

library(tidyverse)
df %>% 
  group_by(CaseNo) %>%
  mutate(rn = row_number()) %>% 
  spread(rn, Code)

推荐阅读