我有一个数据框,其中某些行的元素中用逗号连接了一堆数据。类似这样:
df <- data.frame(
c(2012,2012,2012,2013,2013,2013,2014,2014,2014)
,c("a,b,c","d,e,f","a,c,d,c","a,a,a","b","c,a,d","g","a,b,e","g,h,i")
)
names(df) <- c("year", "type")
我希望能够以
dcast
接近的形式得到它,年份、a、b、c等应成为列,数据框中的频率应在结果数据框的单元格中。我首先尝试在 df
上使用 colsplit
,然后再使用 dcast
,但似乎只有在想要对其中一个级别进行聚合时才起作用。 df2 <- data.frame( df$year, colsplit(df$type, ',' , c('v1','v2','v3','v4','v5')) )
df3 <- dcast(df2, df.year ~ v1)
这个结果只针对
colsplit
的第一级,而不是所有级别。我离解决方案近了吗?还是应该采用完全不同的方法?