R:有条件地对其他变量进行唯一观察-从行到附加列
我是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
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")