【发布时间】:2015-12-16 21:45:13
【问题描述】:
我不知道我为什么要为此苦苦挣扎,因为似乎有很多 SO 答案可以解决这个问题。但我在这里。
我将一个 1 和 0 的向量转换为一个因子,并将值标记为“是”和“否”。
fact <- factor(c(1,1,0,1,0,1),
levels=c(1,0),
labels=c("yes", "no"))
#[1] yes yes no yes no yes
#Levels: yes no
关于将因子转换回数值的问题的答案建议as.numeric(as.character(x)) 和as.numeric(levels(x)[x]。
as.numeric(as.character(fact))
#[1] NA NA NA NA NA NA
as.numeric(levels(fact))[fact]
#[1] NA NA NA NA NA NA
【问题讨论】:
-
我认为最好的选择是在将其更改为因子类之前创建另一个对象。即
v1 <- c(1,1,0,1,0,1); fact <- factor(v1, levels=c(1,0), labels=c('yes', 'no'));unique(v1)[as.numeric(fact)] -
一旦你改变了标签,这是不可能的(在最一般的意义上)。如果您知道原始代码是什么以及用什么替换它们,那么您可以在特定情况下返回。例如,如果您不更改标签,您尝试过的解决方案会奏效。
-
这就是我所缺少的。我认为 R 正在将新信息与旧信息一起存储。我想我希望 R 用数据标签做一些更像 Stata 的事情。
-
例如
c(1,0)[as.integer(fact)]适用于您的情况,但这需要您知道原始代码及其“顺序”。 -
This 可能是相关问答。
标签: r