楼主: dxystata
1321 3

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

版主

已卖:302份资源

大师

37%

还不是VIP/贵宾

-

TA的文库  其他...

Software

中英文Ebook

R学习

威望
2
论坛币
183395 个
通用积分
15333.1475
学术水平
208 点
热心指数
271 点
信用等级
174 点
经验
298627 点
帖子
5586
精华
1
在线时间
13632 小时
注册时间
2006-6-21
最后登录
2025-12-22

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

楼主
dxystata 发表于 2013-7-7 17:59:42 |AI写论文
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
拉您进交流群
GMT+8, 2026-1-9 08:58