繁体   English   中英

如何将列表转换为 R 中的 data.frame?

[英]How to convert a list into a data.frame in R?

我使用此代码在 R 中使用 fdth 包创建了一个频率表

 fdt(x, breaks = "Sturges")

具体结果是:

Class limits         f   rf   rf(%)    cf  cf(%)
 [-15.907,-11.817)   12 0.00  0.10    12   0.10
 [-11.817,-7.7265)    8 0.00  0.07    20   0.16
  [-7.7265,-3.636)    6 0.00  0.05    26   0.21
   [-3.636,0.4545)   70 0.01  0.58    96   0.79
    [0.4545,4.545)   58 0.00  0.48   154   1.27
    [4.545,8.6355)   91 0.01  0.75   245   2.01
   [8.6355,12.726)  311 0.03  2.55   556   4.57
   [12.726,16.817)  648 0.05  5.32  1204   9.89
   [16.817,20.907)  857 0.07  7.04  2061  16.93
   [20.907,24.998) 1136 0.09  9.33  3197  26.26
   [24.998,29.088) 1295 0.11 10.64  4492  36.90
   [29.088,33.179) 1661 0.14 13.64  6153  50.55
   [33.179,37.269) 2146 0.18 17.63  8299  68.18
    [37.269,41.36) 2525 0.21 20.74 10824  88.92
     [41.36,45.45) 1349 0.11 11.08 12173 100.00

它以列表形式给出:

> class(x)
[1] "fdt.multiple" "fdt"          "list"  

我需要将其转换为数据框对象,以便我可以拥有一张表格。 我该怎么做?

我是使用 R 的初学者 :(

由于您没有提供可重现的数据示例,我使用了?fdt帮助页面中的示例,该示例与您所拥有的更接近。

library(fdth)
mdf <- data.frame(c1=sample(LETTERS[1:3], 1e2, TRUE),
                  c2=as.factor(sample(1:10, 1e2, TRUE)),
                  n1=c(NA, NA, rnorm(96, 10, 1), NA, NA),
                  n2=rnorm(100, 60, 4),
                  n3=rnorm(100, 50, 4),
                  stringsAsFactors=TRUE)
fdt <- fdt(mdf,breaks='FD',by='c1')

class(fdt)
#[1] "fdt.multiple" "fdt"          "list" 

您可以从每个列表中提取table部分并将它们绑定在一起。

result <- purrr::map_df(fdt, `[[`, 'table')
#In base R
#result <- do.call(rbind, lapply(fdt, `[[`, 'table'))
result

#      Class limits  f         rf     rf(%) cf      cf(%)
#1  [8.1781,9.1041)  5 0.20833333 20.833333  5  20.833333
#2   [9.1041,10.03)  6 0.25000000 25.000000 11  45.833333
#3   [10.03,10.956) 10 0.41666667 41.666667 21  87.500000
#4  [10.956,11.882)  3 0.12500000 12.500000 24 100.000000
#5  [53.135,56.121)  4 0.16000000 16.000000  4  16.000000
#6  [56.121,59.107)  8 0.32000000 32.000000 12  48.000000
#7  [59.107,62.092)  8 0.32000000 32.000000 20  80.000000
#....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM