楼主: wangmax
7323 11

[问答] 用dplyr进行数据整理的问题 [推广有奖]

  • 0关注
  • 0粉丝

初中生

0%

还不是VIP/贵宾

-

威望
0
论坛币
8 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
54 点
帖子
9
精华
0
在线时间
12 小时
注册时间
2013-2-22
最后登录
2015-2-5

楼主
wangmax 发表于 2015-1-15 13:32:13 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
QQ图片20150115132938.png

帮忙给看看,a表根据b表来扩充记录,从1条记录扩充到7条记录。

也就是说扩充后7条记录中,qoriSN,qstuSex,qisAudit三个字段的排列组合是不同的(“0”和“-”都返回true),其他字段都是相同的。

用dplyr怎么写啊。

扩充后的记录C是这样的
QQ图片20150115132948.png


二维码

扫码加我 拉你入群

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

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

关键词:dplyr 数据整理 Audit saud Audi 记录

沙发
李会超 发表于 2015-1-15 14:03:54
merge函数就行吧,merge(a,b,by='qisAudit')

藤椅
wangmax 发表于 2015-1-15 14:29:19
李会超 发表于 2015-1-15 14:03
merge函数就行吧,merge(a,b,by='qisAudit')
试了一下,才返回了4条记录。

板凳
wangmax 发表于 2015-1-15 18:04:03
只能自己頂了

报纸
wangmax 发表于 2015-1-16 13:38:25
自己顶顶了

地板
daishen 发表于 2015-1-16 14:54:53
a表你少给了一行数据。
> inner_join(a,b,by='qisAudit')
  qisAudit stuSN kno qoriSN.x qstuSex.x knoStuScore qoriSN.y qstuSex.y
1        1  1940   5        2        男           4        0      <NA>
2        0  1940   5        2        男           4        0        男
3        1  1940   5        2        男           4        0        男
4        0  1940   5        2        男           4        2      <NA>
5        1  1940   5        2        男           4        2      <NA>
6        0  1940   5        2        男           4        2        男
7        1  1940   5        2        男           4        2        男

7
wangmax 发表于 2015-1-16 16:10:21
为了简化说明,所以A表就给了一条数据。
C表是最终所需要的效果。

只是by='qisAudit'是不对的,因为约束条件是qoriSN,qstuSex,qisAudit这三个字段,而判断规则是“0”和“-”都返回true,所以一条记录经过inner join后,会变成7条。

8
wangmax 发表于 2015-1-16 17:23:53
在sql里是这么写的:
from  a  inner join  b
           on(a.qoriSN=case b.qoriSN when 0 then a.qoriSN else b.qoriSN end     
          and a.qstuSex=case b.qstuSex when '-' then a.qstuSex else b.qstuSex end      
          and a.qisAudit=case b.qisAudit when 0 then a.qisAudit else b.qisAudit end)

但就是不知道在r里面该怎么写了。

9
yywan0913 在职认证  发表于 2015-1-16 17:43:08
  1. b的第三列不等于2 貌似基本就是c了
复制代码

10
wangmax 发表于 2015-1-16 17:50:36
yywan0913 发表于 2015-1-16 17:43
是的,根据a表里的这条记录,只要b表中第三列不等于2就满足条件了。

但实际上a表有很多记录,这三列也是各种情况。

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

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