访问列表中包含的公共元素数据帧

问题描述 投票:0回答:2

我有以下数据集:

id1 <- data.frame(level = c(1, 2, 3),
              time = c(45, 50, 60),
              location = c(124235,2352353,645664))

id2 <- data.frame(level = c(1, 2, 3),
                      time = c(45, 50, 60),
                      location = c(124235,2352353,645664))

id3 <- data.frame(level = c(1, 2, 3),
                  time = c(45, 50, 60),
                  location = c(124235,2352353,645664))

big.list <- list(id1,id2,id3)

我的问题:

该列表总共包含59个数据帧。我想创建一个数据帧,该数据帧由leveltimenot location上的列表信息中的所有数据帧组成。此新创建的数据帧还应在id上包含信息。

这应该是这样:

solution <- data.frame(id = c(1,1,1,2,2,2,3,3,3),
                  level = c(1,2,3,1,2,3,1,2,3),
                  time = c(45, 50, 60,45, 50, 60,45, 50, 60))

我尝试过的事情:

datalist <- list()

for (i in 1:3) {
  datalist[[i]] <- as.data.frame(c(big.list[[i]]$time,big.list[[i]]$level))
}

谢谢您!

r
2个回答
2
投票

您可以使用bind_rows包中的dplyr

dplyr::bind_rows(big.list,.id="id")

0
投票

[rbindlist中带有data.table的选项

library(data.table)
rbindlist(big.list, idcol = 'id')
#    id level time location
#1:  1     1   45   124235
#2:  1     2   50  2352353
#3:  1     3   60   645664
#4:  2     1   45   124235
#5:  2     2   50  2352353
#6:  2     3   60   645664
#7:  3     1   45   124235
#8:  3     2   50  2352353
#9:  3     3   60   645664
© www.soinside.com 2019 - 2024. All rights reserved.