楼主: dxystata
2061 13

[问答] 如何关联? [推广有奖]

版主

已卖: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 发表于 2012-10-11 00:09:54 |AI写论文
500论坛币
数据框a为
sex bq
1     1
1     2
2     1
2     2
1     2
1     2

数据框b为
variable value label
sex          1      M
sex          2      F
bq           1      A
bq           2      B
bq           3      C

根据数据框a和b
得到数据框c,结果为
        bq
sex   A  B  C
M      1  3  0
F       1  1  0



最佳答案

关键词:Variable label value alue ABLE 如何

沙发
qoiqpwqr 发表于 2012-10-11 00:09:55
a <- data.frame(sex=c(1,1,2,2,1,1), bq=c(1,2,1,2,2,2))
b <- data.frame(variable=c("sex","sex","bq","bq","bq"), value=c(1,2,1,2,3), label=c("M","F","A","B","C"), stringsAsFactors=FALSE)

vars <- colnames(a)
for (i in 1:length(vars)) {
    labs <- b[b$variable==vars[i], ]
    n <- nrow(labs)
    for (j in 1:n) {
        a[a[, vars[i]] == labs$value[j], vars[i]] <- labs$label[j]
    }
    a[, vars[i]] <- factor(a[, vars[i]])
    levels(a[, vars[i]]) <- c(labs$label)
}
已有 1 人评分经验 收起 理由
ltx5151 + 20 热心帮助其他会员

总评分: 经验 + 20   查看全部评分

藤椅
qoiqpwqr 发表于 2012-10-11 04:12:00
数据框c是怎么得来的(从a和b)?

板凳
dxystata 发表于 2012-10-11 07:31:32
qoiqpwqr 发表于 2012-10-11 04:12
数据框c是怎么得来的(从a和b)?
是的。

报纸
dxystata 发表于 2012-10-11 07:35:57
通过数据框b对数据框a进行关联得到新的数据框,然后用table 应该就可以得到数据框c

地板
qoiqpwqr 发表于 2012-10-11 19:36:01
a <- data.frame(sex=c(1,1,2,2,1,1), bq=c(1,2,1,2,2,2))
a$sex <- factor(a$sex)
levels(a$sex) <- c("M", "F")
a$bq <- factor(a$bq)
levels(a$bq) <- c("A", "B", "C")
table(a)

7
dxystata 发表于 2012-10-11 22:23:11
qoiqpwqr 发表于 2012-10-11 19:36
a <- data.frame(sex=c(1,1,2,2,1,1), bq=c(1,2,1,2,2,2))
a$sex <- factor(a$sex)
levels(a$sex) <- c("M", "F")
a$bq <- factor(a$bq)
levels(a$bq) <- c("A", "B", "C")
table(a)
谢谢!
关键问题是如何从数据框b中提取相关信息对数据框a中的变量进行levels

8
jmpamao 发表于 2012-10-11 22:48:21
a <- data.frame(sex=c(1,1,2,2,1,1), bq=c(1,2,1,2,2,2))
a$sex <- factor(a$sex)    # 向量转换因子
levels(a$sex) <- c("M", "F")  # 数值型因子 转换 字符型因子
a$bq <- factor(a$bq)
levels(a$bq) <-c("A", "B", "C")
xtabs (~ sex + bq, data= a)   # a 是sex和bq的对应关系, b 是 sex 和 bq 对于数值和字符两种描述


9
dxystata 发表于 2012-10-11 22:56:09
jmpamao 发表于 2012-10-11 22:48
a <- data.frame(sex=c(1,1,2,2,1,1), bq=c(1,2,1,2,2,2))
a$sex <- factor(a$sex)    # 向量转换因子
levels(a$sex) <- c("M", "F")  # 数值型因子 转换 字符型因子
a$bq <- factor(a$bq)
levels(a$bq) <-c("A", "B", "C")
xtabs (~ sex + bq, data= a)
没用到数据框b

10
jmpamao 发表于 2012-10-12 00:16:35
a <- data.frame(sex=c(1,1,2,2,1,1), bq=c(1,2,1,2,2,2))
b <- data.frame(variable=c("sex","sex","bq","bq","bq"),value=c(1,2,1,2,3),label=c("M","F","A","B","C"))
bsex <- subset(b, variable=="sex")
bbq <- subset(b, variable=="bq")
bsex$variable <- factor(bsex$variable)
bsex$variable <- bsex$label
bbq$variable <- factor(bbq$variable)
bbq$variable <- bbq$label
a$sex <- factor(a$sex)   
levels(a$sex) <- bsex$variable
a$bq <- factor(a$bq)
levels(a$bq) <- bbq$variable
xtabs(~ sex + bq, data = a)

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

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