楼主: dxystata
1138 3

[问答] 如何通过yvar传递can [推广有奖]

版主

大师

34%

还不是VIP/贵宾

-

TA的文库  其他...

Software

中英文Ebook

R学习

威望
2
论坛币
182600 个
通用积分
15207.3903
学术水平
208 点
热心指数
271 点
信用等级
174 点
经验
291628 点
帖子
5382
精华
1
在线时间
13485 小时
注册时间
2006-6-21
最后登录
2024-5-3

初级学术勋章 初级热心勋章 中级热心勋章 初级信用勋章

100论坛币
  1. can <- c(rep(1, times = 231), rep(0, times = 178), rep(1, times = 11),rep(0, times = 38))
  2. smk <- c(rep(1, times = 225), rep(0, times = 6), rep(1, times = 166),
  3.          rep(0, times = 12), rep(1, times = 8), rep(0, times = 3), rep(1, times = 18),
  4.          rep(0, times = 20))
  5. alc <- c(rep(1, times = 409), rep(0, times = 49))
  6. dat <- as.data.frame(cbind(alc, smk, can))

  7. aaa<-function(yvar,data) {
  8.    bbb1 <- data.frame(ftable(xtabs(~ smk + alc + can,data=data)))
  9.    print(bbb1)
  10.    bbb2<-subset(bbb1,yvar==1,select=c(1,2,4))
  11.    print(bbb2)
  12. }
  13. aaa(yvar=can,data=dat)
复制代码
如何通过yvar传递can,想得到的结果为
  smk alc Freq
   0   0    3
   1   0    8
   0   1    6
   1   1  225
谢谢!

最佳答案

关键词:VaR function 如何

本帖被以下文库推荐

  • · R学习|主题: 262, 订阅: 161
沙发
ntsean 发表于 2013-7-7 17:59:43 |只看作者 |坛友微信交流群
can <- c(rep(1, times = 231), rep(0, times = 178), rep(1, times = 11),rep(0, times = 38))
smk <- c(rep(1, times = 225), rep(0, times = 6), rep(1, times = 166),
         rep(0, times = 12), rep(1, times = 8), rep(0, times = 3), rep(1, times = 18),
         rep(0, times = 20))
alc <- c(rep(1, times = 409), rep(0, times = 49))
dat <- as.data.frame(cbind(alc, smk, can))

aaa<-function(yvar,data) {
   bbb1 <- data.frame(ftable(xtabs(~ smk + alc + can,data=data)))
   print(bbb1)
   yvarc <- as.character(match.call()$yvar)
   subs<- bbb1[, yvarc]==1

   bbb2<-subset(bbb1,subs,select=c(1,2,4))
   print(bbb2)

}
aaa(yvar=smk,data=dat)
已有 1 人评分论坛币 学术水平 热心指数 收起 理由
qoiqpwqr + 20 + 1 + 1 热心帮助其他会员

总评分: 论坛币 + 20  学术水平 + 1  热心指数 + 1   查看全部评分

使用道具

藤椅
ntsean 发表于 2013-7-8 09:24:05 |只看作者 |坛友微信交流群
can <- c(rep(1, times = 231), rep(0, times = 178), rep(1, times = 11),rep(0, times = 38))
smk <- c(rep(1, times = 225), rep(0, times = 6), rep(1, times = 166),
         rep(0, times = 12), rep(1, times = 8), rep(0, times = 3), rep(1, times = 18),
         rep(0, times = 20))
alc <- c(rep(1, times = 409), rep(0, times = 49))
dat <- as.data.frame(cbind(alc, smk, can))

aaa<-function(yvar,data) {
   bbb1 <- data.frame(ftable(xtabs(~ smk + alc + can,data=data)))
   print(bbb1)
   subs <- eval(yval, bbb1)==1
   bbb2<-subset(bbb1,subs,select=c(1,2,4))
   print(bbb2)
}
aaa(yvar=can,data=dat)

使用道具

板凳
dxystata 发表于 2013-7-8 09:51:13 |只看作者 |坛友微信交流群
ntsean 发表于 2013-7-8 09:24
can
输出的结果不对!

使用道具

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

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

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

GMT+8, 2024-5-4 01:08