【问题标题】:How to compare two different dataframes(xlsx) and extract equal data in Rstudio如何比较两个不同的数据帧(xlsx)并在 Rstudio 中提取相等的数据
【发布时间】:2018-04-14 20:35:10
【问题描述】:

我有两个电子表格,第一个是我的目的地和要运输的数量,第二个是目的地和每个数量范围的运输成本。

如何从第一个电子表格中提取一行,将其与第二个电子表格进行比较,找到正确范围的相同目的地并打印运输成本?!

这是我上传电子表格所做的:

library(openxlsx)
openxlsx::read.xlsx()
library(raster)
library(ggmap)
for(i in 1:14)
  {
  mat<-read.xlsx("C:/Users/Caterina/Dropbox/progetti lean/progetto data analytics/Cost_world.xlsx", sheet = i)
  mat
}

matr<-read.xlsx("C:/Users/Caterina/Dropbox/progetti lean/progetto data analytics/transport.xlsx")
matr
matr<-as.data.frame(matr)
if(y<- matr$NAZIONE==mat$Nazione
)
matr$NAZIONE[y]

【问题讨论】:

  • 这和SQL语言有关吗?
  • 我正在使用 Rstudio,但我正在寻找一个查询来提取数据并将它们与其他数据库进行比较
  • 这些是电子表格而不是数据库。您正在加载两个名为 mat 和 matr 的表,可能结构为数据框。如果他们有共同的领域,我认为 NAZIONE 和 Nazione?然后您可以使用合并来合并表格。有关详细信息,请参阅 ?merge。
  • 是的,你完全正确,我的意思是数据框......但我已经尝试过“合并”,但它不能满足我们的需求!

标签: r excel merge


【解决方案1】:

如果您想合并到表中,请确保您拥有具有通用名称的所需列,包括大写字母,即大小写字母。

这里正在使用通用列名进行合并:

> a = matrix(1:4,2,2)
> colnames(a) <- c("A","B")
> a
     A B
[1,] 1 3
[2,] 2 4
> b = matrix(c(1:2,5:6),2,2)
> colnames(b) <- c("A","C")
> b
     A C
[1,] 1 5
[2,] 2 6
> merge(a,b)
  A B C
1 1 3 5
2 2 4 6

但如果变量名大小写不匹配,那么merge(...)不会按列合并A和a:

> colnames(b) <- c("a","C")
> merge(a,b)
  A B a C
1 1 3 1 5
2 2 4 1 5
3 1 3 2 6
4 2 4 2 6

【讨论】:

  • 好的,感谢您的回答,但此解决方案类似于使用 cbind 或 rbind wright?例如,我的目的是:识别某个列(意大利,列国​​家下)下单元格中的内容,然后在另一个 excel 文件的所有单元格中搜索“意大利”,并给出所有“意大利”所在的行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多