Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中查找并替换分类变量_R_String_Atomic - Fatal编程技术网

在R中查找并替换分类变量

在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快得多 一些重复项可以帮助您开始:,,也可以查

如何为数据帧中的大型原子向量或特定行/列替换agree=1和agree=0?

您可以这样做

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