如何合并嵌套在另一个数据帧中的所有数据帧并在一个结果数据帧中生成所有组合?

Nea*_*sch 6 merge r flatten dataframe data.table

我有sampledata使用下面的代码复制的数据:

###producing sample data
sampledatain1 <- data.frame(in_1=c(1,2,3,4,5),in_2=c("A","B","C","D","E"),stringsAsFactors = F)
sampledatain2 <- data.frame(in_1=c(6,7,8,9,10),in_2=c("F","G","H","I","J"),stringsAsFactors = F)
sampledatain3 <- data.frame(in_1=c(99,98,97,96,95),in_2=c("Z","Y","X","W","V"),stringsAsFactors = F)
sampledata <- data.frame(row = 1:3,
                    colmerge1 = c("MA","MB","MC"), 
                    colmerge2 = -99:-97,
                    stringsAsFactors = FALSE)
sampledata$df <- list(sampledatain1,sampledatain2,sampledatain3)
Run Code Online (Sandbox Code Playgroud)

我想展平所有嵌套的数据框并将它们组合起来,结果如下desired_data

###reproducing desired data 
library(data.table)
sampledatain1$row <- 1
sampledatain1$colmerge1 <- "MA"
sampledatain1$colmerge2 <- -99

sampledatain2$row <- 2
sampledatain2$colmerge1 <- "MB"
sampledatain2$colmerge2 <- -98

sampledatain3$row <- 3
sampledatain3$colmerge1 <- "MC"
sampledatain3$colmerge2 <- -97

desired_data <- rbindlist(list(sampledatain1,sampledatain2,sampledatain3))
Run Code Online (Sandbox Code Playgroud)

如何使用函数从样本数据生成desired_data来做到这一点?

Mar*_*ark 6

您正在寻找的东西是unnest()unnest_longer()然后unpack()/unnest_wider()也有效):

\n
> tidyr::unnest(sampledata, df)\n# A tibble: 15 \xc3\x97 5\n     row colmerge1 colmerge2  in_1 in_2 \n   <int> <chr>         <int> <dbl> <chr>\n 1     1 MA              -99     1 A    \n 2     1 MA              -99     2 B    \n 3     1 MA              -99     3 C    \n 4     1 MA              -99     4 D    \n 5     1 MA              -99     5 E    \n 6     2 MB              -98     6 F    \n 7     2 MB              -98     7 G    \n 8     2 MB              -98     8 H    \n 9     2 MB              -98     9 I    \n10     2 MB              -98    10 J    \n11     3 MC              -97    99 Z    \n12     3 MC              -97    98 Y    \n13     3 MC              -97    97 X    \n14     3 MC              -97    96 W    \n15     3 MC              -97    95 V\n
Run Code Online (Sandbox Code Playgroud)\n

要将其转换为 data.table,您可以使用as.data.table()

\n

有关详细信息unnest()请阅读文档

\n