全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2002 13
2012-10-11
悬赏 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



最佳答案

二维码

扫码加我 拉你入群

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

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

全部回复
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)
}
二维码

扫码加我 拉你入群

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

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

2012-10-11 04:12:00
数据框c是怎么得来的(从a和b)?
二维码

扫码加我 拉你入群

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

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

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

扫码加我 拉你入群

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

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

2012-10-11 07:35:57
通过数据框b对数据框a进行关联得到新的数据框,然后用table 应该就可以得到数据框c
二维码

扫码加我 拉你入群

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

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

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)
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

分享

扫码加好友,拉您进群