楼主: oyrf91
3081 2

[问答] ddply命令用自编试用数据就可以,用原数据集就不行,为什么? [推广有奖]

  • 0关注
  • 2粉丝

已卖:1157份资源

高中生

27%

还不是VIP/贵宾

-

威望
0
论坛币
7156 个
通用积分
5.7603
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
120 点
帖子
6
精华
0
在线时间
20 小时
注册时间
2013-3-2
最后登录
2024-10-5

楼主
oyrf91 发表于 2015-7-5 20:52:15 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
试用数据是这样的:
x1        x2        x3        y
1        1        1        2
2        5        1        4
3        8        1        5
4        6        1        87
5        3        2        4
6        5        2        8
7        78        2        0
8        9        2        1
9        3        2        9

是dta格式。函数为:
library("foreign")
dat3<-read.dta("试用数据.dta")

install.packages("plyr")
library("plyr")

f<-function(y,x1,x2){
  f1<-lm(y~x1+x2)
  coef(f1)
  z=f1$coef
  z[2]
}
g<-ddply(dat3, 'x3', summarize, x6=f(y,x1,x2))

结果为:
x3x6

1

50.65306

2

0.332145

是正确的。
但是当我把数据集改成企业数据时,程序为:
library("foreign")
dat2<-read.dta("企业数据.dta")

library("plyr")

f<-function(lwage,big,midbig){
  f1<-lm(lwage~big+midbig)
  coef(f1)
  z=f1$coef
  z[2]
}
g<-ddply(dat2,'userid',summarize,x4=f(lwage,big,midbig))其中lwage,big,midbig,userid都是类似于x1,x2的变量,但是结果为:x4所有元素都是NA,即

userid                 x4
1101017001       NA
1101050052       NA
等等。
我用mode()命令检查了所有变量,都是numeric,而dat2和dat3都是数据框。为什么用自编数据就可以,用企业数据就不行?我该怎么办?谢谢各位大神了!!
二维码

扫码加我 拉你入群

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

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

关键词:ddply 数据集 Foreign Library BRARY ddply r语言

沙发
victorchan0633 发表于 2015-7-9 20:55:12
你的每个userid是不是只对应一个lwage,big,midbig或者多个相同的值啊,因为ddply函数是按照variable把数据框划分成不同组,然后在每组进行操作,如果每个userid对应的lwage,big,midbig值太少,是无法得出回归结果的。

藤椅
oyrf91 发表于 2015-8-10 14:23:58
问题解决了,是因为在估计方程 f1<-lm(lwage~big+midbig)时,同一组每个样本的big值都是一样的,违反了ols估计的假定。还是谢谢楼上!

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-22 23:55