首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何创建对名称列表进行迭代的数据格式?

如何创建对名称列表进行迭代的数据格式?
EN

Stack Overflow用户
提问于 2018-11-23 04:04:58
回答 1查看 55关注 0票数 0

我有这个数据:

代码语言:javascript
运行
AI代码解释
复制
x = data.frame("city" = c("Madrid","Berlin","Florence","Madrid"), 
"Visits" = c(100,200,80,38), "Date" = c(1,2,3,4))

从该示例中,我希望获得3个数据数据(每个城市一个),其中包含该城市的所有值,并将其命名为没有列城市的城市,因此它将产生以下结果:

代码语言:javascript
运行
AI代码解释
复制
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))

我在熊猫中问了同样的问题:How to create dataframes iterating over a set?,但我找不到类似于字典理解的东西。

我得到了唯一的列表,并得到了一个城市的价值:

代码语言:javascript
运行
AI代码解释
复制
cities = unique(select(x,city))
for (i in cities){
  dplyr::filter(x,city == i)}

我知道循环不应该在R中使用,apply是更有效的,但我不知道如何使用apply来实现这一点。只要我能够轻松地访问它们以传递其他函数(例如auto.arima),我就对其他数据结构(而不是每个城市的数据)开放。非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-27 01:08:11

你可以

代码语言:javascript
运行
AI代码解释
复制
list_dfs <- split(x, x$city)

将拆分结果赋值给变量,然后使用例如list_dfs$Madrid访问单个数据帧。

如果您更愿意将数据帧作为您的全局环境中的单个变量(请参阅https://stackoverflow.com/a/9726880/6197649),您可以这样做

代码语言:javascript
运行
AI代码解释
复制
list2env(split(x, x$city), envir = .GlobalEnv)

但这并不是推荐的"R做事方式“。通常最好在一个列表中有类似的结构化对象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53446415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档