楼主: gtxing
6702 14

[问答] R语言merge函数匹配数据出错,为什么呢? [推广有奖]

  • 0关注
  • 0粉丝

已卖:1051份资源

硕士生

21%

还不是VIP/贵宾

-

威望
0
论坛币
12300 个
通用积分
1.8505
学术水平
2 点
热心指数
2 点
信用等级
2 点
经验
3341 点
帖子
52
精华
0
在线时间
207 小时
注册时间
2016-5-26
最后登录
2022-10-12

楼主
gtxing 发表于 2017-5-5 23:52:52 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
R语言merge函数匹配数据出错,为什么呢?
  1. library(data.table)
  2. DT1<-setDF(data.table(name=c("张三","李四","张三丰")))
  3. DT2<-setDF(data.table(name=c("张三","李四","老五"),age=c(23,35,42)))
  4. merge(DT1,DT2,by="name",all.x=TRUE)
复制代码

求大神解答,李四为什么是NA而不是35呢,真是想不通,如下面截图:

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:merge函数 Merge R语言 Library Table

问题截图.png (12.37 KB)

问题截图

问题截图

沙发
bbslover 在职认证  发表于 2017-5-6 01:11:20
DT1<-data.table(name=c("zhangSan","liSi","zhangSanFeng"))
DT2<-data.table(name=c("zhangSan","liSi","wangWu"),age=c(23,35,42))
DT2[match(DT1[, name], DT2[, name])]
DT2[match(DT1[, name], DT2[, name])][!is.na(name)]

这个是你要的吗?
已有 1 人评分论坛币 收起 理由
jiangbeilu + 10 鼓励积极发帖讨论

总评分: 论坛币 + 10   查看全部评分

藤椅
gtxing 发表于 2017-5-6 07:45:15 来自手机
gtxing 发表于 2017-5-5 23:52
R语言merge函数匹配数据出错,为什么呢?

求大神解答,李四为什么是NA而不是35呢,真是想不通,如下面截 ...
不是哦,我就想知道merge函数的结果李四为什么是NA而不是35呢,真是想不通,如上面截图:

板凳
czrdiao 发表于 2017-5-6 08:12:50
运行了代码,没什么问题,应该是你运行时不小心摁错了什么

报纸
gtxing 发表于 2017-5-6 08:28:34 来自手机
czrdiao 发表于 2017-5-6 08:12
运行了代码,没什么问题,应该是你运行时不小心摁错了什么
没有摁错哦,我重新运行了几遍还是这个结果

地板
吴小虎20122012 学生认证  发表于 2017-5-6 11:33:47
没有人问题啊 !程序运行 OK,目测楼主点错

7
gtxing 发表于 2017-5-6 11:49:45 来自手机
吴小虎20122012 发表于 2017-5-6 11:33
没有人问题啊 !程序运行 OK,目测楼主点错
真没有点错,我重复运行好多次了,关了又重新启动再运行,还是这个结果,之前也是没问题的,我安装了Microsoft R Server之后就变成这样,但是我卸载了R跟Microsoft R Server,重新装了R,还是这样出错

8
bbslover 在职认证  发表于 2017-5-6 19:54:01
base::merge 试试看

9
蓝色 发表于 2017-5-6 20:41:12
我运行也没问题

> library(data.table)
> DT1<-setDF(data.table(name=c("张三","李四","张三丰")))
> DT2<-setDF(data.table(name=c("张三","李四","老五"),age=c(23,35,42)))
> merge(DT1,DT2,by="name",all.x=TRUE)
    name age
1   李四  35
2   张三  23
3 张三丰  NA
>

10
gtxing 发表于 2017-5-6 22:28:08 来自手机
bbslover 发表于 2017-5-6 19:54
base::merge 试试看
一样的结果,把DT1跟DT2转成dataframe就正确了,但是转成dataframe就不能进行datatable格式的计算了,所以关键是我安装了Microsoft R Server9.1.0之后问题才出现,现在我把它卸载了重装了R,问题还存在,不知道怎么解决了,除了这个问题这个包里使用%in%结果也不正确了,难道我的电脑再也不能用data.table包了么,有没谁也使用过Microsoft R Server9.1.0,有没遇到这个问题

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 21:59