说我有这样的表
year genre
1992 comedy
2012 comedy
2007 drama
1998 drama
2005 drama
2001 romance
2013 documentary
... ....
如何将其更改为此类
comedy drama romance documentary
1992 2007 2001 2013
2012 1998 ... ...
... ... ...
... ...
...
每种类型的年份结果长度不同
答案 0 :(得分:3)
对于不平衡的群体(不同的长度),我认为你最好得到一个列表,其中每个项目是相应类型的年份向量。使用split
genre_list = split(your_data$year, your_data$genre)
答案 1 :(得分:0)
尝试:
library(dplyr)
library(tidyr)
dat %>% group_by(genre) %>%
mutate(num = row_number()) %>%
spread(genre, year)
Source: local data frame [3 x 5]
num comedy documentary drama romance
(int) (int) (int) (int) (int)
1 1 1992 2013 2007 2001
2 2 2012 NA 1998 NA
3 3 NA NA 2005 NA
答案 2 :(得分:0)
或者我们可以使用data.table
library(data.table)
dcast(setDT(dat)[, num:= seq_len(.N), genre], num~genre, value.var='year')