【问题标题】:R: Convert large list to data frameR:将大列表转换为数据框
【发布时间】:2022-06-27 21:56:13
【问题描述】:

我有一个名为res 的大列表(包含 10 个元素),如下所示。请注意,我只展示了其中的 3 个元素,所以帖子不会太长。

> str(res)
List of 10
 $ :'data.frame':   1 obs. of  13 variables:
  ..$ id               : chr "121040004071"
  ..$ province         : chr "Castellón/Castelló"
  ..$ comunidadAutonoma: chr "Comunitat Valenciana"
  ..$ muni             : chr "Segorbe"
  ..$ type             : chr "portal"
  ..$ address          : chr "A-23"
  ..$ geom             : chr "POINT(-0.428888910999945 39.806487449)"
  ..$ lat              : num 39.8
  ..$ lng              : num -0.429
  ..$ portalNumber     : chr "23"
  ..$ stateMsg         : chr "Resultado exacto de la búsqueda"
  ..$ state            : chr "1"
  ..$ countryCode      : chr "011"
 $ :'data.frame':   1 obs. of  13 variables:
  ..$ id               : chr "121040004071"
  ..$ province         : chr "Castellón/Castelló"
  ..$ comunidadAutonoma: chr "Comunitat Valenciana"
  ..$ muni             : chr "Segorbe"
  ..$ type             : chr "portal"
  ..$ address          : chr "A-23"
  ..$ geom             : chr "POINT(-0.428888910999945 39.806487449)"
  ..$ lat              : num 39.8
  ..$ lng              : num -0.429
  ..$ portalNumber     : chr "23"
  ..$ stateMsg         : chr "Resultado exacto de la búsqueda"
  ..$ state            : chr "1"
  ..$ countryCode      : chr "011"
 $ :'data.frame':   1 obs. of  13 variables:
  ..$ id               : chr "121040004071"
  ..$ province         : chr "Castellón/Castelló"
  ..$ comunidadAutonoma: chr "Comunitat Valenciana"
  ..$ muni             : chr "Segorbe"
  ..$ type             : chr "portal"
  ..$ address          : chr "A-23"
  ..$ geom             : chr "POINT(-0.428888910999945 39.806487449)"
  ..$ lat              : num 39.8
  ..$ lng              : num -0.429
  ..$ portalNumber     : chr "23"
  ..$ stateMsg         : chr "Resultado exacto de la búsqueda"
  ..$ state            : chr "1"
  ..$ countryCode      : chr "011"

每个观察对应于西班牙瓦伦西亚市的某个地址。在对我的 10 个地址进行地理编码后,我最终得到了每个地址的 13 个变量,其中包含有关经度、纬度、省份等信息。

我想把它做成一个数据框,这样每一行我们都有主要的$:'data.frame,其余的..$ x是变量/列。

感谢您的帮助

【问题讨论】:

  • 你可以试试dplyr::bind_rows(res, .id = 'data.frame')
  • rbindlist(res) 适合您吗?此功能在data.table库中可用
  • 感谢两位! dplyr::bind_rows(res, .id = 'data.frame')rbindlist(res) 我都试过了,效果很好。
  • 我对此提出了其他问题。与上面的示例不同,所有地址都有 13 个变量,现在,我恰好有一个更长的列表(大约 300 个元素),其中一些没有相同数量的变量。
  • 看看merge函数

标签: r database list


【解决方案1】:

您可以使用以下功能:

Map函数

list_data <- Map(as.data.frame, list_data)

rbindlist函数

datarbind <- rbindlist(list_data)

【讨论】:

  • 不客气,如果可行,请不要忘记为我的答案投票;)
  • 第二个答案别忘了library(data.table)
  • 当然!我需要至少 15 声望才能投票,但它表示我的反馈已被记录
猜你喜欢
  • 2015-04-16
  • 1970-01-01
  • 2015-11-14
  • 1970-01-01
  • 2020-07-29
  • 1970-01-01
  • 1970-01-01
  • 2021-10-17
  • 2017-07-04
相关资源
最近更新 更多