R merge() 不再按预期工作

标签 r merge

这以前对我有用,但现在不行了,在我在这里寻求帮助之前,我花了两天时间修改它。 我有两个数据集,一个称为 Access,另一个称为 CO2。每个变量都有四个变量,其中两个是常见的,我想用它来合并两个数据集。只是为了真正保存它,我将 head() 和 str() 输出粘贴到此处:

> head(Access)                      > head(CO2)
       x     y  access                     x     y   CO2equ
1 -32.65 83.65    0.00              1 -32.65 83.65 183316.4
2 -36.85 83.55 4481.25              2 -36.85 83.55 173327.8
3 -36.75 83.55 4464.75              3 -36.75 83.55 301413.9
4 -36.65 83.55 4448.25              4 -36.65 83.55 360757.2
5 -36.55 83.55 4431.00              5 -36.55 83.55 409523.5
6 -36.45 83.55 4414.50              6 -36.45 83.55 448302.0

> str(Access)                                       
'data.frame':   2183106 obs. of  3 variables:       
 $ x     : num  -32.7 -36.8 -36.8 -36.7 -36.5 ...   
 $ y     : num  83.7 83.5 83.5 83.5 83.5 ...        
 $ access: num  0 4481 4465 4448 4431 ...           
 - attr(*, "data_types")= chr  "N" "N" "N"          

> str(CO2)
'data.frame':   2183106 obs. of  3 variables:
 $ x     : num  -32.7 -36.9 -36.8 -36.7 -36.6 ...
 $ y     : num  83.6 83.5 83.5 83.5 83.5 ...
 $ CO2equ: num  183316 173328 301414 360757 409523 ...
 - attr(*, "data_types")= chr  "N" "N" "N"

现在我正在尝试 merge() 的版本。第一个结果是一个空的 data.frame,第二个结果在所有行中存在两次,一次用于第一个数据集的变量,第二个用于第二个数据集的变量:

> M1 = merge(Access, CO2, c("x","y"))
> head(M1)
[1] x      y      access CO2equ
<0 rows> (or 0-length row.names)

> M2 = merge(Access, CO2, by=c("x","y"), all=TRUE)
> length(M2$x)
[1] 4366212
> head(M2)
        x      y access CO2equ
1 -179.95 -89.95     NA      0
2 -179.95 -89.85     NA      0
3 -179.95 -89.75     NA      0
4 -179.95 -89.65     NA      0
5 -179.95 -89.55     NA      0
6 -179.95 -89.45     NA      0

显然,各自的 x 值和 y 值不被认为是相等的 - 但我不知道为什么。数据类型相同,值看起来相同,最糟糕的是,我几个月前成功地做到了这一点。当时,我保存了命令历史记录,现在当我将其复制并粘贴到 R 控制台时,它不起作用。我在 R 2.13.0 和 Revolution R Enterprise 4.3 中都尝试过。我有理由确信这不是一个软件错误,而是一些微不足道的事情,即使在花了两天时间之后我也忽略了这一点。

干杯,
乔亨

最佳答案

在合并之前对 x 和 y 尝试 round(..., 1)。

关于R merge() 不再按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7324773/

相关文章:

r - 使用初始值后的前一个值对向量执行操作

javascript - 合并数组并转换为 JSON 字符串

python - 加入/合并两个 Pandas 数据框并将列用作多索引

git - 从 master cherry-pick 到分支时避免重复提交,然后从分支 merge 回 master

regex - 将 dd/mm/yy 和 dd/mm/yyyy 转换为日期

R ggplot2 geom_line 位置闪避

r - 如何使用 R 中的加权(调查)数据制作漂亮的无边界地理专题/热图,可能对点观测使用空间平滑

R:按公共(public)列合并两个数据框

R 仅在多列重叠的情况下合并数据帧

c++ - 使用 Rcpp 构建包时处理修饰的外部二进制文件