我有一个包含因素的数据框。
dat <- c("low", "high", "middle", "middle", "low", "low")
dat <- factor(dat, levels = c("low", "middle", "high")
lvl <- unique(sort(dat))
x <- seq(1,3,1)
我想迭代每个因子,如果它等于第i个等级,用数字变量替换因子。
for(i in 1:3){
if(dat == lvl[i]) {
dat <- x[i]
}
}
我一直收到此错误:the condition has length > 1 and only the first element will be used
。
必须有一个简单的解决方案吗? 为清晰起见编辑:
我没有尝试用相应的级别替换向量。我尝试用某个序列(在这种情况下为1,2,3)中的术语替换该术语,该序列对应于该级别。
答案 0 :(得分:1)
您可以使用ifelse,但对于此特定任务,您只需使用as.numeric。
dat <- as.numeric(dat)
答案 1 :(得分:0)
这是你想要做的吗?
dat <- factor(c("low", "high", "middle", "middle", "low", "low"))
levels(dat)
# [1] "high" "low" "middle"
lvl = c(99, 86, 123) # New names for level
levels(dat) = lvl
dat
# 86 99 123 123 86 86
# Levels: 99 86 123