如何通过比较列

时间:2017-02-09 01:12:43

标签: r

我是R的新手,我想在R中创建一个虚拟变量,根据数据集中某一列的值,决定为1或0。

值类似于“51.1”,“47.9”,“75.4”,“89.4”等。

我必须为大于55的值分配1,为小于55的值分配0。 我知道这可以使用mutate和ifelse函数来完成,但是,我对如何比较这些字符串值感到困惑。

任何建议都将不胜感激。

谢谢。

2 个答案:

答案 0 :(得分:0)

您的评论让我相信您有一个因子变量,因此您应首先转换为字符向量然后转换为数字。 "随机值"你看到的是因子levels属性的整数索引:

 dfrm$newcol <- as.numeric(as.character(dfrm$oldcol))>55  +0

&#34; + 0&#34;在那里将逻辑转换为数字。也可以在整个表达式周围使用as.integeras.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”,它可以帮助您避免将变量转换为因子或字符串。因此,您可以将该变量转换为数字并稍后比较它们的值。

希望这有帮助!