[英]Create a dataframe from a list of tables in R
我正在嘗試創建一個需要從R中的列表填充的數據框。該列表包含2003個表,這些表表示不同縣的土地覆蓋數據。 每個表都有兩行-列標簽和土地覆蓋數據行。 不幸的是,每個表都有不同的列數(如果不存在該縣的土地覆被類別,而不是得到零,則在創建列表時會刪除該列)。
我想要的是一個長度為2003行,寬度為15列的數據框(每個土地覆蓋類為一列)。
當我基於另一個問題嘗試df <- data.frame(matrix(unlist(l), nrow=132, byrow=T))
,它創建了一個由兩列組成的長表(其中一列帶有所有2003年縣的標簽和值在第二欄中)。 因為每個表的長度不相等,所以我無法將其轉換為寬格式。
一些樣本數據:
l <- replicate(
2003,
list(sample(1:100, sample(1:15,15))),
simplify = FALSE
)
如果您的對象實際上是數據幀列表,則應該能夠執行data.table::rbindlist(your_list, fill = T)
。 由於您的示例實際上並不是數據幀列表,因此需要執行額外的步驟。
library(data.table)
l <- lapply(l, function(x){
x <- as.list(x[[1]])
setNames(x, paste0('V', seq_along(x)))})
df <- rbindlist(l, fill = T)
在基數R中
# make the lengths all the same
l <- lapply(l, function(x) c(x[[1]], rep(NA, max(0, 15 - length(x[[1]])))))
# rbind and convert to df
df <- as.data.frame(do.call(rbind, l))
dim(df)
# [1] 2003 15
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.