R:有条件地对其他变量进行唯一观察-从行到附加列

R:有条件地对其他变量进行唯一观察-从行到附加列,r,R,我是R的新手。我努力为以下问题找到合适的解决方案: 我的数据框大致如下所示: ID Att 1 a 1 b 1 c 2 d 3 e 3 f 4 g 我想将其转换为以下形式的新df: ID Att_1 Att_2 ... Att_n 1 a b c 2 d N/A N/A 3 e f N/A 4 g

我是R的新手。我努力为以下问题找到合适的解决方案:

我的数据框大致如下所示:

ID Att  
1   a  
1   b  
1   c  
2   d  
3   e  
3   f  
4   g  
我想将其转换为以下形式的新df:

ID Att_1 Att_2 ... Att_n 

1   a     b         c          
2   d    N/A       N/A         
3   e     f        N/A         
4   g    N/A       N/A         
其中列数取决于“ID”中唯一“Att”的最大计数(此处为三个)。新数据帧中列数(即“n”)的生成应自动进行,并取决于以下各项的计数:

max_ID_count <- table(df$ID)  
n <- max(max_ID_count)  

max\u ID\u count我们可以创建一个序列列,然后
spread

library(tidyverse)
df1 %>%
   group_by(ID) %>% 
   mutate(rn = paste0("Att_", row_number())) %>% 
   spread(rn, Att)
# A tibble: 4 x 4
# Groups: ID [4]
#      ID Att_1 Att_2 Att_3
#   <int> <chr> <chr> <chr>
#1     1 a     b     c    
#2     2 d     <NA>  <NA> 
#3     3 e     f     <NA> 
#4     4 g     <NA>  <NA> 

tidyr
包中查看
spread
library(data.table)
dcast(setDT(df1), ID ~ paste0("Att_", rowid(ID)), value.var = "Att")