如何在 R 中使用相同的循环向量引用多个数据库?

2024-04-14

我需要通过组合、聚合和拆分数据帧来执行各种操作。这些行动需要连续几年重复(2000 年、2001 年、2002 年等)。但是,我找不到一种方法来基于带有年份的循环字符串来引用多个数据框。

一个例子: 我想合并同一年的 3 个数据框。我当前的代码:

Stake_2000 <- combine(A2000, B2000, C2000)
Stake_2001 <- combine(A2001, B2001, C2001)
Stake_2002 <- combine(A2002, B2002, C2002)
Stake_2003 <- combine(A2003, B2003, C2003)
Stake_2004 <- combine(A2004, B2004, C2004)
Stake_2005 <- combine(A2005, B2005, C2005)

我想通过用循环中的变量替换年份来简化。但是,我无法设法让 R 从适当的数据帧中读取。我曾多次尝试:

names <- c("2000", "2001", "2002", "2003", "2004", "2005")
for (n in names)
{Temp <- combine(c("A",n,sep=""), (c"B",n,sep=""), c("C",n,sep=""))
assign(paste("Stake_",n,sep=""), Temp)}

or replace combine function with combine(An, Bn, Cn), or combine(A+n, B+n, C+n)

除了这些操作之外,我还需要从不同的数据库中对多年来的类似问题进行聚合和匹配。例如,在循环中将所有“2000”替换为后续年份:

Temp <- aggregate(VarA~VarB, data=A_2000, FUN=length)
S_2000$VarC <- Temp[match(S_2000$ID, Temp$ID), "VarA"]

我认为有一些非常直接的答案,但我一直无法找到它。


你可以尝试

library(dplyr)
names <- c("2000", "2001", "2002", "2003", "2004", "2005")
for(n in names){
   Temp <- bind_cols( get(paste0('A', n)), get(paste0('B', n)),
                get(paste0('C', n)))
      assign(paste0('Stake_', n), Temp)
 }

identical(cbind(A2000, B2000, C2000), Stake_2000)
#[1] TRUE

 identical(cbind(A2005, B2005, C2005), Stake_2005)
#[1] TRUE

For the aggregate,你可以做

 lapply(mget(paste0('A', 2000:2005)), function(x)
                       aggregate(V1~V2, x, FUN=length))

同样对于B and C虽然不清楚是什么S_2000 is.

Update

如果行数不同,我们可以使用combine with stri_list2matrix from stringi

A2000 <- rbind(A2000, c(4,8, 9 , 15, 25))
library(stringi)
for(n in names){
  Temp <- as.data.frame(stri_list2matrix(combine( get(paste0('A', n)), 
    get(paste0('B', n)), get(paste0('C', n)))), stringsAsFactors=FALSE)
  Temp[] <- lapply(Temp, as.numeric)
  assign(paste0('Stake_', n), Temp)
 }
Stake_2000
#   V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15
#1  6 19 12 18  1  1 18  5  7  17   9  19  12  18   8
#2  4  5  7  4 11 12  9  1  2   5   4  13  18   5   6
#3 14 16 14  0 15  3  7 13 20   0   4   3   0   0   6
#4 10 16 14 10  2  4 10  6 13  16   4   2   6   8  15
#5 13  5  6  2  4 12 11  0 10  16   9  17  12   7   6
#6  4  8  9 15 25 NA NA NA NA  NA  NA  NA  NA  NA  NA

data

set.seed(24)
list2env(setNames(lapply(1:6, function(i) 
  as.data.frame(matrix(sample(0:20, 5*5, replace=TRUE), ncol=5))),
     paste0('A', 2000:2005)), envir=.GlobalEnv)
list2env(setNames(lapply(1:6, function(i) 
   as.data.frame(matrix(sample(0:20, 5*5, replace=TRUE), ncol=5))),
       paste0('B', 2000:2005)), envir=.GlobalEnv)
 list2env(setNames(lapply(1:6, function(i) 
   as.data.frame(matrix(sample(0:20, 5*5, replace=TRUE), ncol=5))), 
      paste0('C', 2000:2005)), envir=.GlobalEnv)    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 R 中使用相同的循环向量引用多个数据库? 的相关文章

随机推荐

  • 如何解释无效的 CSS 行?

    我花了大约30分钟调试字体加载 https stackoverflow com q 20900218 1420197页面出现问题 我终于发现我使用了错误的注释 this is a comment font face is this igno
  • 使用 JDBC 获取所有外键

    我正在使用 postgreSQL 我正在尝试从表中获取所有外键 这是我目前正在使用的方法 public String getFKeyData String tableName int i throws SQLException Databa
  • RVM设置ruby默认,当打开新终端时删除RVM设置,返回系统ruby

    我刚买了一台新 MacBook Pro 并尝试在系统中设置 RVM 我安装了RVM并将默认设置为 rvm list default 默认 Ruby 用于新 shell ruby 1 9 3 p194 x86 64 If RVM is在 sh
  • 使用 javascript 对 html 脚本进行小修改,我无法解决[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 这是我的代
  • tkinter python 的全局变量问题

    我正在尝试创建一个简单的界面来访问具有第一个 最后一个 上一个和下一个功能的名称数组 但我用作位置跟踪器的全局变量不起作用 我已经提到过各种问题 非常感谢您的帮助 这是代码 from tkinter import Tk Label Entr
  • Google Maps API v3:地形图的自定义样式

    有谁知道是否可以为地形图创建自定义浮雕样式 显然 您可以为法线贴图创建自定义样式 但我也想更改地形的默认颜色渐变 非常感谢 您确实可以设置地形图的样式 我这里有一个 JSFiddle 演示了这一点 https jsfiddle net w7
  • Eclipse调试时断点错误如何解决?

    需要调试一个JAR文件 ProA 所以在项目中导入源代码 但是在尝试设置断点时 Eclipse 出现一个奇怪的错误 详情如下 Unable to install breakpoint due to missing line number a
  • 为什么 jQuery 1.9+ attr() 方法没有被弃用?

    作为一名 jQuery1 9 软件开发人员 我可以 弃用 使用attr 我日常工作中的方法 正如许多问题所表明的那样 prop 与 attr https stackoverflow com questions 5874652 prop vs
  • jQuery - 在函数之间共享变量

    这应该相当简单 我很确定我只是不明白 仅供参考 该网站使用 jQuery 在内容上运行 ajax load 在我的主父页面上 在标题中我有我的 nav load jQuery 代码
  • 如何从 cpp 文件修改 VS_VERSION_INFO

    当我去资源视图 gt myproject rc gt 版本 gt VS VERSION INFO我有可以更改的字段 可以通过cpp文件更改这些字段吗 所以我可以使用类似的东西 define FileDescription This is m
  • 在猫鼬中指定模式

    我想知道定义此模式的最佳方法是什么 Newsitem 只能有 1 个用户 ID 和 1 个任务 ID 一个任务可以属于多个新闻站点 一个用户可以属于多个新闻站点 我搜索过例子 但我想说的例子并不多 我怎样才能用 mongoose 和 mon
  • Node.js 中的 Json 到 csv

    我正在尝试在 node js 中将非常大的 json 转换为 csv 但它花费了太多时间 并且在转换时导致 100 cpu 占用 jsonToCsv function data var keys Object keys data 0 var
  • 在omniauth中命名的Rails路由

    我在routes rb中有这个 namespace api do namespace v1 do devise for users constraints format json controllers gt omniauth callba
  • 在 Eclipse 中调试时查看完整字符串

    在调试 Java 代码时 视图 变量 和 表达式 中的字符串仅显示到一定长度 之后 Eclipse 将显示 有什么方法可以检查整个字符串吗 这减轻了在各处添加日志语句进行调试的痛苦 在 变量 视图中 您可以右键单击 详细信息 窗格 显示字符
  • Firefox:从网页强制全屏模式

    我正在开发一个基于网络的数据库 需要通过firefox网络浏览器打开 因为一些css3元素 我希望页面以全屏模式自动打开 我不希望数据库的用户有权访问 Firefox 菜单项 无法完成如果您只是控制网页 网页中的控件不会导致浏览器实例本身发
  • TextEditingController 被废弃后被使用

    我创建了一个容器输入的表单 我循环遍历输入列表来创建表单 我的变量是 List fields label Strings firstName controller fnameController validator val gt Valid
  • 如何使用 Neo4jTemplate 进行合并而不是创建

    我当前正在迭代一个数组 其中每个索引包含两个节点和一个关系 Part 1 gt Part 2 并且我使用 Neo4jTemplate save 方法将其保存到数据库中 但是 某些索引具有与其他节点有关系的重复节点 Part 2 gt Par
  • 如何通过设备树配置 uio_dmem_genirq 驱动程序

    The uio dmem genirq https git kernel org pub scm linux kernel git stable linux stable git tree drivers uio uio dmem geni
  • 如何强制 IntelliJ 使用不同的主文件夹

    我有一台有两个硬盘的电脑 在第一个 SSD 磁盘中 我有 Windows 分区 C 在第二个磁盘 D raid 卷 中 我安装了所有程序 我还将我的用户文件夹 桌面 文档 下载 图片和视频 移动到D Users David 安装 Intel
  • 如何在 R 中使用相同的循环向量引用多个数据库?

    我需要通过组合 聚合和拆分数据帧来执行各种操作 这些行动需要连续几年重复 2000 年 2001 年 2002 年等 但是 我找不到一种方法来基于带有年份的循环字符串来引用多个数据框 一个例子 我想合并同一年的 3 个数据框 我当前的代码