扩大R数据框



我试图在R中扩大数据框架,但似乎以一种不寻常的方式,因为我在这里进行了大量搜索后,还没有找到一种简单的方法来做到这一点。

假设我有一个这样的数据帧,其中ID是一个数字,用来标识一个唯一的人,这个唯一的人可能有几个与他们相关的代码:

ID<-c(1, 2, 2, 2, 3, 3,4)
CODE<-c(123, 938, 293, 456, 203, 203, 91)
df <- data.frame(ID, CODE)

我想扩大它,以便每个ID只有一行,并将代码添加到其他列。这将导致生成的新列的数量与关联代码数量最多的ID对应的代码的数量一样多。例如,如果一个ID只有一个代码,那么在第一个代码之后新生成的所有列都应该用NAs填充。生成的数据框应该如下所示:

<表类>IDCODE1CODE2CODE3tbody><<tr>1123NANA29382934563203203NA491NANA
library(tidyverse)
df %>%
distinct(ID, CODE) %>%
group_by(ID) %>%
mutate(col = paste0("CODE", row_number())) %>%
ungroup() %>%
pivot_wider(names_from = col, values_from = CODE)

结果

# A tibble: 4 x 4
ID CODE1 CODE2 CODE3
<dbl> <dbl> <dbl> <dbl>
1     1   123    NA    NA
2     2   938   293   456
3     3   203    NA    NA
4     4    91    NA    NA

相关内容

  • 没有找到相关文章

最新更新