首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中做简单的“合并”的错误维度

在R中做简单的“合并”的错误维度
EN

Stack Overflow用户
提问于 2016-06-16 11:26:23
回答 1查看 183关注 0票数 1

我做R用户已经太久了,这个问题不会出现,我需要你的帮助(尴尬地)。

我有两个数据集:

代码语言:javascript
复制
> dim(markus301_rms.df)
[1] 743  15
> dim(markus301_envel.df)
[1] 743  15

共享一个公共列,该列由完全相同的字符串填充:

代码语言:javascript
复制
> class(markus301_envel.df$soundname)
[1] "character"
> class(markus301_rms.df$soundname)
[1] "character"
> setdiff(markus301_rms.df$soundname,markus301_envel.df$soundname)
character(0)

因此,适合将这两个集合合并到一个743x29数据帧中。

现在,发生了这样的事情:

代码语言:javascript
复制
dim(merge(markus301_rms.df,markus301_envel.df,by="soundname"))
[1] 1485   29

列数与预期相同,但行数几乎是预期的两倍。merge只能识别两个集合中的单个重复条目,而setdiff则将它们全部识别为重复项。

奇怪的是,dplyr的行为也是一样的:

代码语言:javascript
复制
> require(dplyr)
> markus301_rms.df %>% full_join(markus301_envel.df,by="soundname") %>% dim()
[1] 1485   29
> markus301_rms.df %>% left_join(markus301_envel.df,by="soundname") %>% dim()
[1] 1485   29
> markus301_rms.df %>% right_join(markus301_envel.df,by="soundname") %>% dim()
[1] 1485   29

我以前从未遇到过这种情况。

我的索引栏可能有什么问题?

编辑:我的机器上的信息:

代码语言:javascript
复制
> Sys.info()
                                                                                           sysname 
                                                                                          "Darwin" 
                                                                                           release 
                                                                                          "15.5.0" 
                                                                                           version 
"Darwin Kernel Version 15.5.0: Tue Apr 19 18:36:36 PDT 2016; root:xnu-3248.50.21~8/RELEASE_X86_64" 
                                                                                          nodename 
                                                             "Fredrik-Karlssons-Macbook-Air.local" 
                                                                                           machine 
                                                                                          "x86_64"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-16 12:03:42

您确定在两个索引列中没有任何重复的值吗?也就是说,和(重复(markus301_envel.df$soundname))是否等于0?- jkt 11分钟前 table(duplicated(markus301_envel.df$soundname))和table(复制(markus301_rms.df$soundname))说什么?-7分钟前的Jan

很抱歉未能将您的评论推介给您的回答,但是谢谢!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37857811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档