【发布时间】:2017-09-30 13:36:51
【问题描述】:
我的数据集中有一些因子变量,我尝试使用循环将它们转换为数字
a = sample(c('a', 'b'), 100, replace = TRUE)
b = sample(c('a', 'b'), 100, replace = TRUE)
df = as.data.frame(cbind(a, b))
library(plyr); library(dplyr)
for(i in df[, 1:2]) {
k = as.numeric(as.character(revalue(df[,i],
c('a' = 1,
'b'= 2
))))
}
我得到错误
Error in revalue(df[, i], c(a = "1", b = "2")) :
x is not a factor or a character vector.
怎么了? 注意 'a' 等于 1 & 'b' = 2 很重要
【问题讨论】:
-
你想做
for(i in 1:2)(或者for(i in seq_along(df[, 1:2]))而不是for(i in df[, 1:2]) -
对于您的示例数据,只需
df$a <- as.numeric(df$a)和df$b <- as.numeric(df$b)即可。