楼主: 蝇子
3526 10

[求助]请高手帮忙看一段程序 [推广有奖]

  • 4关注
  • 2粉丝

讲师

63%

还不是VIP/贵宾

-

威望
0
论坛币
4904 个
通用积分
16.8678
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
808 点
帖子
165
精华
0
在线时间
849 小时
注册时间
2006-4-22
最后登录
2024-5-16

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

 n1<-9802
 n2<-3821


for(i in 1:n1){
+ for(j in 1:n2){
+ if((sh1$HHID==sh2$HHID[j]) & (sh1$LINE==sh2$LINE[j]))  sh3<-cbind(sh1[i,],sh2[j,])
+ j<-j+1}
+ i<-i+1}

我有两个数据文件分别sh1和sh2,它们有两个共同的变量HHID和LINE(当然各自还有自己的变量),sh1文件中这两个变量下的数据要多些。现在我想寻找这两个文件中这两个变量下相同的数据,并且将这些相同的数据组成文件sh3。

上面是我自己写的程序。请高手帮我看下哪里有问题。

非常感谢!

二维码

扫码加我 拉你入群

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

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

关键词:求助 程序 高手 帮忙

回帖推荐

momozilla 发表于9楼  查看完整内容

按你的说法,假设 sh1 和 srh2 分别如下:sh1HHID  LINE  otherVar 1 30  1 8 23  2 2 27  3 2 23  4 5 24  5 7 21  6 6 22  7 9 29  810 26  9 8 24 10 7 30 1110 27 12 9 25 13 4 24 14 3 25 15sh2 HHID  LINE  otherVAR 15 30  1  10 28  2  15 29  3 ...

momozilla 发表于7楼  查看完整内容

除非是规定了sh1和sh2的那两个变量之间有什么关系,否则tmp1和tmp2的长度没有关系tmp1是sh1中与sh2数据相同的那一部分,后者则是sh2中与sh1相同的部分从你所说,你想分别从两个数据中挑出某两个变量有相同数值的cases,并组成一个新数据如果是,那么把tmp1和tmp2用emerge并列起来是不对的只需简单地rbind就行

momozilla 发表于5楼  查看完整内容

position1 <- match(sh1$HHID, sh2$HHID) & match(sh1$LINE, sh2$LINE)position2 <- match(sh2$HHID, sh1$HHID) & match(sh2$LINE, sh1$LINE)tmp1 <- sh1[!is.na(position1),]tmp2 <- sh2[!is.na(position2),]out <- rbind(tmp1, tmp2)p.s. you use "for" loop a little bit wrongly, please refer to R manual

本帖被以下文库推荐

沙发
agan06 发表于 2008-4-4 09:09:00 |只看作者 |坛友微信交流群
为什么不用SAS,SAS对这样的数据处理很方便。

使用道具

藤椅
heavenicefox 发表于 2008-4-4 10:29:00 |只看作者 |坛友微信交流群

感觉SAS投入太高

产出太低

使用道具

板凳
蝇子 发表于 2008-4-4 10:52:00 |只看作者 |坛友微信交流群

呵呵,不会用SAS。

那楼上的能不能写个SAS程序呢?

有没有高手能不能帮我看下这个R程序啊?

使用道具

报纸
momozilla 发表于 2008-4-4 17:31:00 |只看作者 |坛友微信交流群

position1 <- match(sh1$HHID, sh2$HHID) & match(sh1$LINE, sh2$LINE)
position2 <- match(sh2$HHID, sh1$HHID) & match(sh2$LINE, sh1$LINE)

tmp1 <- sh1[!is.na(position1),]
tmp2 <- sh2[!is.na(position2),]

out <- rbind(tmp1, tmp2)

p.s. you use "for" loop a little bit wrongly, please refer to R manual
已有 1 人评分论坛币 学术水平 收起 理由
crystal8832 + 10 + 1 热心帮助其他会员

总评分: 论坛币 + 10  学术水平 + 1   查看全部评分

使用道具

地板
蝇子 发表于 2008-4-4 20:01:00 |只看作者 |坛友微信交流群

谢谢楼上的!你的这种方法确实不错。不过在运行时会显示两个tmp1和tmp2数据长度不一致。

我用merge()行么??

使用道具

7
momozilla 发表于 2008-4-4 23:26:00 |只看作者 |坛友微信交流群

除非是规定了sh1和sh2的那两个变量之间有什么关系,否则tmp1和tmp2的长度没有关系
tmp1是sh1中与sh2数据相同的那一部分,后者则是sh2中与sh1相同的部分
从你所说,你想分别从两个数据中挑出某两个变量有相同数值的cases,并组成一个新数据
如果是,那么把tmp1和tmp2用emerge并列起来是不对的
只需简单地rbind就行

已有 1 人评分论坛币 收起 理由
crystal8832 + 10 好的意见建议

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

使用道具

8
蝇子 发表于 2008-4-5 10:06:00 |只看作者 |坛友微信交流群

我是想从从两个数据中挑出某两个变量有相同数值的cases,并连同其它变量一起组成新的数据文件。


这样不行么

使用道具

9
momozilla 发表于 2008-4-7 07:17:00 |只看作者 |坛友微信交流群

按你的说法,假设 sh1 和 srh2 分别如下:

sh1
HHID  LINE  otherVar
 1 30  1
 8 23  2
 2 27  3
 2 23  4
 5 24  5
 7 21  6
 6 22  7
 9 29  8
10 26  9
 8 24 10
 7 30 11
10 27 12
 9 25 13
 4 24 14
 3 25 15

sh2
 HHID  LINE  otherVAR
 15 30  1
 10 28  2
 15 29  3
 11 30  4
  6 27  5
  7 27  6
 12 27  7
 12 25  8
  6 26  9
  9 30 10

按我的程序
position1 <- match(sh1$a, sh2$a) & match(sh1$b, sh2$b)
position2 <- match(sh2$a, sh1$a) & match(sh2$b, sh1$b)

tmp1 <- sh1[!is.na(position1),]
tmp2 <- sh2[!is.na(position2),]

我不明白,有什么理由一定保证 tmp1 和 tmp2 会有同样的长度,并且能把tmp1 和 tmp2并列起来?!(你知不知道并列起来将意味着什么?)
我更不明白,是我没说清楚,还是你根本就没有真正明白你想要解决的问题!

P.S.  请不要在标题上注明什么“高手”。就你目前的水平,根本无须高手来回答你,真正的高手也根本不屑回答你这么如此初级、而且不带自己思考的问题。换句话说, 你现在的有这样那样的问题,只是因为你不努力学习,跟高手不高手的一点关系都没有。这么初级的问题还一问再问!如果你就想着别人帮你解决一切,而实在   懒得   自己去思考,那么,我的忠告是:S-Plus/R根本不适合你,你不妨于学别的软件。学习R的人,不一定都是很聪明的(比如我),但一定是很勤奋的、至少 是勤于思考的(比如我)。我不是没问题,但我没有像你这种自己不努力学习、不自己思考、而只会张嘴就问的问题。如果你无法接受我这些话,那么你真的应该放 弃S-Plus/R了。

Good Luck!

[此贴子已经被作者于2008-4-7 7:21:42编辑过]

已有 1 人评分论坛币 学术水平 收起 理由
crystal8832 + 10 + 1 热心帮助其他会员

总评分: 论坛币 + 10  学术水平 + 1   查看全部评分

使用道具

10
蝇子 发表于 2008-4-7 09:30:00 |只看作者 |坛友微信交流群

不好意思,我想我明白你的意思,是我没表述清楚。两个文件中的其它变量个数是不一样的,所以用rbind()不对。不管怎么样,我现在得到我要的结果了。谢谢。

P.S.我承认我现在是过于懒惰了,接受批评。我觉得有时候得到别人的指点学习比一个人学习要好。我标题上写“高手”是觉得比我强的都是高手。

Thank You!

[此贴子已经被作者于2008-4-7 9:35:26编辑过]

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-22 09:47