我有以下数据集:
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个数据帧。我想创建一个数据帧,该数据帧由level和time但not 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))
}
谢谢您!
您可以使用bind_rows
包中的dplyr
dplyr::bind_rows(big.list,.id="id")
[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