我是R的新手,我想在R中创建一个虚拟变量,根据数据集中某一列的值,决定为1或0。
值类似于“51.1”,“47.9”,“75.4”,“89.4”等。
我必须为大于55的值分配1,为小于55的值分配0。 我知道这可以使用mutate和ifelse函数来完成,但是,我对如何比较这些字符串值感到困惑。
任何建议都将不胜感激。
谢谢。
答案 0 :(得分:0)
您的评论让我相信您有一个因子变量,因此您应首先转换为字符向量然后转换为数字。 "随机值"你看到的是因子levels
属性的整数索引:
dfrm$newcol <- as.numeric(as.character(dfrm$oldcol))>55 +0
&#34; + 0&#34;在那里将逻辑转换为数字。也可以在整个表达式周围使用as.integer
或as.numeric
。
答案 1 :(得分:0)
以下是与您的案例类似的快速示例:
Data <- data.frame(YourCol=c("51.1", "47.9","75.4","89.4", "65.4","56.9","61.4","56.8"), stringsAsFactors=FALSE)
Compare <- ifelse(as.numeric(Data$YourCol) > 55, 1,0)
请注意,通过添加“stringsAsFactors = FALSE”,它可以帮助您避免将变量转换为因子或字符串。因此,您可以将该变量转换为数字并稍后比较它们的值。
希望这有帮助!