【发布时间】:2015-12-07 12:10:59
【问题描述】:
我正在尝试重新编码 R 数据框中的变量。示例 - 我的数据集中的变量 X 包含 1 和 0。我想创建另一个变量 Y,它将 X 中的 1 和 0 分别重新编码为 Yes 和 No。
我尝试这样做来创建重新编码的 Y 变量:
w <- as.character()
for (i in seq_along(x)) {
if (x[i] == 1) {
recode <- "Yes"
} else if (x[i] == 0) {
recode <- "No"
}
w <- cbind(w, recode)
}
然后我这样做是为了将 X 和 Y 排列在一起:
y <- c(x, y)
我得到的是这样的:
y
# [1] "1" "1" "0" "1" "0" "0" "1" "1" "0" "1" "0" "0" "Yes" "Yes" "No" "Yes" "No" "No"
我期待一个带有 X 和 Y 列的数据框。
问题:
- 如何将 X 和 Y 放入数据框中?
- 有没有更好的方法来重新编码数据框中的变量?
【问题讨论】:
-
你的循环的输出是 w 并且它不在后面......它应该是 y
-
而且不需要循环。使用类似
ifelse -
使用
factor(x, levels=c(0, 1), labels=c("No", "Yes"))代替循环。 -
@MLavoie,
cbind在使用data.frame时不是必需的(如果在原子向量上调用,它将首先强制转换为matrix,这可能会导致对单个列的意外强制)跨度> -
你看过 plyr 中的“revalue”吗?