在这个问题的基础上,我想要执行与aggregate
相反的任务(或者像下面MWE中的data.table
等效函数),以便从df2开始再次获得df1。
因此,任务是从df2重新生成df1。为此,我尝试了tidytext::unnest_tokens
,但是当需要“解聚”多个变量(models、countries和years)时,我无法弄清楚如何使其正常工作。
保留原始变量的大写形式也是不错的。
除tidytext::unnest_tokens
之外的任何优雅的解决方案都将被接受!谢谢!
这是MWE:
####MWE
library(data.table)
library(tidytext)
df1 <- data.frame(brand=c(rep('A',4), rep('B',5), rep('C',3), rep('D',2),'E'),
model=c('A1','A1','A2','A3','B1','B2','B2','B2','B3','C1','C1','C2','D1','D2','E1'),
country=c('P','G','S','S','P','P','F','I','D','S','F','F','G','I','S'),
year=c(91,92,93,94,98,95,87,99,00,86,92,92,93,95,99))
df1
dd <- data.table(df1)
df2 <- as.data.frame(dd[, list(models=paste(model, collapse=' /// '),
countries=paste(country, collapse=' /// '),
years=paste(year, collapse=' /// ')),
by=list(brand=brand)])
df2
df1b <- df2 %>%
unnest_tokens(model, models, token = "regex", pattern = " /// ")
df1b
####