簡體   English   中英

從R中的表列表創建數據框

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM