R:如何自动计算一个数据帧,然后根据多个数据帧的结果生成图表?

2024-05-19 21:56:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我如何构建一个动态的“下行管道”,通过R推送数据帧以使用这些数据帧自动计算公式?我有一个叫做autocalc的数据框,它有为方程留出的空白。例如,我需要应用这样的方程:autocalc$PPH <- Tokyo$P / Tokyo$PH。PPH已经是一个列/向量

autocalc <- data.frame("INCOME" = c("$0 to $15,000","$15,000 to $29,999","$30,000 to $39,999","$40,000 to $49,999","$50,000 to $69,999","$70,000 to $99,999","$100,000 to $149,999"),
                             "PPH" = c(0,0,0,0,0,0,0),
                             "PTS" = c(0,0,0,0,0,0,0))
    
    autocalc$PPH <- Tokyo$P / Tokyo$PH 
    autocalc$PTS <- autocalc$PPH * .05

此数据框的结果将用于构建带有ggplot2的图表

从示例等式中可以看到,有一个称为Tokyo的数据帧。我有三个城市数据帧(纽约、巴黎、东京)。每个数据帧都有城市的囚犯(矢量P)和人口(矢量PH)。数据按收入组进一步分类

Tokyo <- data.frame("INCOME" = c("$0 to $15,000","$15,000 to $29,999","$30,000 to $39,999","$40,000 to $49,999","$50,000 to $69,999","$70,000 to $99,999","$100,000 to $149,999"),
                          "P" = c(1844,1062,1036,448,770,364,395),
                          "PH" = c(84900,721007,80800,380004,675000,32900,39500))

我想将每个城市应用于autocalc数据框,并生成三个单独的图表。我可以为每个城市复制/粘贴三个版本的autocalc,但这似乎是错误的代码,因为如果我必须修复autocalc中的某些内容,我必须为每个城市重做代码

我查看了以下线索,但我觉得这不应该是一个复杂的问题:

  1. 使用R6库的面向目标编程。创建autocalc类并将副本应用于三个城市?对于初学者来说,R6教程并不多,所以我觉得有更简单的方法吗

  2. 使用lappy()。我发现一个教程生成了类似的内容(基于三个独立数据帧的三个独立图表),但它无法解释如何将autocalc$PPH <- Tokyo$P / Tokyo$PH替换为autocalc$PPH <- Paris$P / Paris$PH。并保存autocalc对每个城市的计算,准备三张图表。我是否应该放弃autocalc数据框并向每个城市的数据框中添加行

  3. 我的朋友不太精通R,但他是一名程序员,建议研究收集方法。编写脚本并使用方法执行重复操作。但是,我找不到关于R的教程。我想这需要我使用R6库的面向对象编程?我在想也许我的任务更适合Python?我被告知R更多的是用于分析,而不是构建像这样动态的东西


Tags: to数据方法data图表动态教程frame
1条回答
网友
1楼 · 发布于 2024-05-19 21:56:13

我认为选择2是最简单、最直接的选择。您可以将3个数据帧放在一个列表中,并使用lapply。您可以在lapply中传递一个匿名函数,以引用函数中的每个城市数据帧

list_dfs <- list(Tokyo, Paris, NewYork)

list_plots <- lapply(list_dfs, function(x) {
  autocalc$PPH <- x$P / x$PH 
  autocalc$PTS <- autocalc$PPH * .05
  #ggplot2  code here
})

lapply中输入ggplot2代码后,它将为每个城市生成一个包含3个地块的列表,您可以通过list_plots[[1]]list_plots[[2]]list_plots[[3]]访问这些地块

相关问题 更多 >