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来做到这一点?
您正在寻找的东西是unnest()(unnest_longer()然后unpack()/unnest_wider()也有效):
> 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\nRun Code Online (Sandbox Code Playgroud)\n要将其转换为 data.table,您可以使用as.data.table()
有关详细信息unnest(),请阅读文档。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           156 次  |  
        
|   最近记录:  |