r - 合并多个 data.frames [r]
问题描述
有一个l1
data.frames列表:
head(lapply(l1,head,n=3),3)
[[1]]
nu_pregao pcVar
1 2371 7.224848
45 2372 2.797704
89 2373 3.947368
[[2]]
nu_pregao pcVar
2 2371 4.055709
46 2372 2.944882
90 2373 3.507937
[[3]]
nu_pregao pcVar
3 2371 4.011461
47 2372 3.679907
91 2373 4.693034
如果一个人Reduce
用来合并它们
l2=Reduce(function(x,y) merge(x,y, by='nu_pregao'),l1)
There were 41 warnings (use warnings() to see them)
得到一系列这样的警告:
1: In merge.data.frame(x, y, by = "nu_pregao") :
column names ‘pcVar.x’, ‘pcVar.y’ are duplicated in the result
结果还可以,唯一的问题是重复的名称。有没有办法避免这种情况?
我已经看到问题如何在 R 中同时合并多个 data.frames 和 sum 和 average 列,但它似乎rbind
不是merge
.
解决方案
像这样的东西怎么样:
l2 <- Reduce(function(x, n) merge(x, l1[[n]], by='nu_pregao', suffixes = c("", n)),
seq(2, length(l1)), init = l1[[1]])
l2
#> nu_pregao pcVar pcVar2 pcVar3
#> 1 2371 7.224848 4.055709 4.011461
#> 2 2372 2.797704 2.944882 3.679907
#> 3 2373 3.947368 3.507937 4.693034
名称一致性的最后润色:
names(l2)[match("pcVar", names(l2))] <- "pcVar1"
l2
#> nu_pregao pcVar1 pcVar2 pcVar3
#> 1 2371 7.224848 4.055709 4.011461
#> 2 2372 2.797704 2.944882 3.679907
#> 3 2373 3.947368 3.507937 4.693034
您的数据:
l1 <- list(read.table(text = "nu_pregao pcVar
1 2371 7.224848
45 2372 2.797704
89 2373 3.947368", header = TRUE),
read.table(text = "nu_pregao pcVar
2 2371 4.055709
46 2372 2.944882
90 2373 3.507937", header = TRUE),
read.table(text = "nu_pregao pcVar
3 2371 4.011461
47 2372 3.679907
91 2373 4.693034", header = TRUE))
推荐阅读
- reporting-services - 哪个 SSDT 版本支持 Oracle Database 12c?
- c# - 为 photonplayers unity3d 设置昵称
- ajax - 我可以“信任”请求源参数吗?
- autohotkey - Autohotkey:将输入长度设置为“任意”
- python - Django rest框架序列化程序键错误
- c - 当我尝试在 c 中编译和运行我的程序时,我的权限被拒绝。可能是什么问题呢?
- python - 使用多个条件迭代数据帧的正确方法
- linux - 在 unix 或 shell 中将新行打印为字符串文字
- cmake - 为什么我的
-config.cmake 有 _include_dir 和 _librairies 为空 - javascript - Firestore 特定数据读取不适用于变量,但适用于静态值