楼主: dxystata
1646 5

[问答] 如何得到如下数据框或矩阵 [推广有奖]

版主

已卖: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 04:44:15 |AI写论文
200论坛币
  1. can <- c(rep(1, times = 231), rep(0, times = 178), rep(1, times = 11),
  2.          rep(0, times = 38))
  3. smk <- c(rep(1, times = 225), rep(0, times = 6), rep(1, times = 166),
  4.          rep(0, times = 12), rep(1, times = 8), rep(0, times = 3), rep(1, times = 18),
  5.          rep(0, times = 20))
  6. alc <- c(rep(1, times = 409), rep(0, times = 49))
  7. dat <- as.data.frame(cbind(alc, smk, can))
复制代码

希望得到如下数据框或矩阵
smk alc  can=1 can=0
0     0     频数    频数
1     0     频数    频数
0     1     频数    频数
1     1     频数    频数

谢谢!
关键词:数据框 如何

本帖被以下文库推荐

  • · R学习|主题: 262, 订阅: 161

沙发
zhangyangsmith 发表于 2013-7-7 04:44:16
  1. table <- as.data.frame(ftable(xtabs(~ smk + alc + can)))

  2. merge(with(table[table$can == 0, ], data.frame(alc = alc, smk = smk, can0 = Freq)), with(table[table$can == 1, ], data.frame(alc = alc, smk = smk, can1 = Freq)))[, c(2, 1, 3, 4)]
复制代码
已有 1 人评分热心指数 收起 理由
qoiqpwqr + 1 热心帮助其他会员

总评分: 热心指数 + 1   查看全部评分

藤椅
zhangyangsmith 发表于 2013-7-7 05:34:55
  1. table <- as.data.frame(ftable(xtabs(~ alc + smk + can)))

  2. merge(with(table[table$can == 0, ], data.frame(alc = alc, smk = smk, "can=0" = Freq)), with(table[table$can == 1, ], data.frame(alc = alc, smk = smk, "can=1" = Freq)))[, c(2, 1, 3, 4)]
复制代码

板凳
zhangyangsmith 发表于 2013-7-7 05:36:37
  1. table <- as.data.frame(ftable(xtabs(~ alc + smk + can)))

  2. merge(with(table[table$can == 0, ], data.frame(alc = alc, smk = smk, "can=0" = Freq)), with(table[table$can == 1, ], data.frame(alc = alc, smk = smk, "can=1" = Freq)))[, c(2, 1, 3, 4)]
复制代码

报纸
jnuctr 发表于 2013-12-21 09:47:22

地板
asdasdaseee 发表于 2014-2-7 17:10:35
  1. n<-length(can);can1<-sum(can)/n;can0<-1-can1
  2. ##矩阵
  3. A<-cbind(smk,alc,can1,can0)
  4. colnames(A)[3:4]<-c("can=1","can=0");A
  5. ##数据框
  6. B<-data.frame(smk,alc,"can=1"=can1,"can=0"=can0);B
复制代码

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-8 13:16