在R中查找并替换分类变量
如何为数据帧中的大型原子向量或特定行/列替换agree=1和agree=0?您可以这样做在R中查找并替换分类变量,r,string,atomic,R,String,Atomic,如何为数据帧中的大型原子向量或特定行/列替换agree=1和agree=0?您可以这样做 x1 <- c("agree","disagree","agree","agree","agree","disagree","disagree") 可以根据需要添加更多条件。我们可以使用+将逻辑转换为二进制 ifelse(x1 == 'agree', 1, 0) 或根据注释使用as.integer +(x1=="agree") 这种方法比ifelse快得多 一些重复项可以帮助您开始:,,也可以查
x1 <- c("agree","disagree","agree","agree","agree","disagree","disagree")
可以根据需要添加更多条件。我们可以使用+将逻辑转换为二进制
ifelse(x1 == 'agree', 1, 0)
或根据注释使用as.integer
+(x1=="agree")
这种方法比ifelse快得多
一些重复项可以帮助您开始:,,也可以查看?替换或?因子。虽然这很有效,而且在这种简单的情况下这是我的首选选项,但添加更多选项实际上是相当麻烦的;因此,此解决方案不能很好地扩展到两个值之外。开关减轻了这一点,但只是在某种程度上,因为该功能仅限于非常特定的输入。R中更普遍的解决方案是使用因子。是的,as.factor是处理分类数据的正确方法。但问题非常具体。我需要习惯以+开头的语句:@user3949008-不,你真的不应该。as.integer更合适,“不需要”,当然。但也不需要您的解决方案,因为您的解决方案毕竟不太明确,因此可读性较差,并且依赖于纯粹偶然的类型转换来实现所需的效果。换句话说,太“聪明”了。我真的不赞成这种解决办法。如果你想知道的话。请不要用它。
as.integer(x1 == "agree")
set.seed(24)
x2 <- sample(c("agree", "disagree"), 1e7, replace=TRUE)
system.time(+(x2=="agree"))
# user system elapsed
# 0.32 0.06 0.40
system.time(ifelse(x2=="agree", 1,0))
# user system elapsed
# 3.20 0.91 4.10