r - 如何创建遍历名称列表的数据框?
问题描述
我有这个数据框:
x = data.frame("city" = c("Madrid","Berlin","Florence","Madrid"),
"Visits" = c(100,200,80,38), "Date" = c(1,2,3,4))
从该示例中,我想获得 3 个数据框(每个城市一个),其中包含包含该城市的所有值并命名为该城市而没有列城市,因此将导致以下结果:
Madrid = data.frame("Visits" = c(100,38), "Date" = c(1,4))
Berlin = data.frame("Visits" = c(200), "Date" = c(2)
Florence = data.frame("Visits" = c(80), "Date" = c(3))
我在 pandas 中问了同样的问题:如何创建迭代集合的数据框?但我找不到类似于字典理解的东西。
我设法获得了唯一的列表并获得了一个城市的价值:
cities = unique(select(x,city))
for (i in cities){
dplyr::filter(x,city == i)}
我知道循环不应该在 R 中使用并且应用更有效,但我不知道如何使用应用来做到这一点。我对其他数据结构(而不是每个城市的数据框)持开放态度,只要我能够轻松访问它们以传递其他功能(例如 auto.arima)。非常感谢你
解决方案
你可以做
list_dfs <- split(x, x$city)
将拆分的结果分配给变量,然后使用例如访问单个数据框list_dfs$Madrid
。
如果您更愿意将数据框作为全局环境中的单个变量(请参阅https://stackoverflow.com/a/9726880/6197649),您可以这样做
list2env(split(x, x$city), envir = .GlobalEnv)
但这不是推荐的“R 做事方式”。通常最好在单个列表中包含类似结构的对象。
推荐阅读
- angular - 如何在角度元素中实现定位?
- python - 对象检测 opencv 需要一个整数(获取类型元组)
- android - ListView.setAdapter(android.widget.ListAdapter)' 在 android 中的空对象引用
- linux - 如何以特定方式重命名目录。重击
- azure - az vim run-command 使用参数调用 shell 脚本
- php - Laravel Dusk 和内存使用 - 如何关闭浏览器和自定义进程
- python - 我需要尽快向服务器发送响应,然后在flask中执行函数吗?
- python - 将事件记录转换为有总和的期间
- amazon-web-services - AWS - 如何将任何视频或图像格式云转换为 MP4 或 JPG?
- java - 从数据库中获取值的代码自动完成显示下拉列表中的所有值