我正在尝试根据x变量的范围创建一个新的分类变量类别。
这是我要做的:
data$category <- ifelse(data$x >= 780, 6,
ifelse(750 =< data$x <= 779, 5,
ifelse(714 =< data$x <= 749, 4,
ifelse(679 =< data$x <= 713, 3,
ifelse(660 =< data$x <= 678, 2,
ifelse(640 =< data$x <= 659, 1, NA))))))
其返回错误:...中出现意外的“ <=”
有什么建议吗?
答案 0 :(得分:2)
R不支持语法750 =< data$x <= 779
。将其更改为750 <= data$x & data$x <= 779
。这适用于代码中的所有范围。
答案 1 :(得分:1)
我建议使用cut
代替这种方法。
[edit] eipi10在评论中显示了如何执行此操作-但我建议进行两项更改:
d$cat <- cut(d$x, c(640, 660, 679, 714, 750, 780, Inf)-1 , labels=FALSE)
labels=FALSE
,则会自动获得连续的整数作为标签如您所见,这比拥有许多嵌套的ifelse
要容易得多。
一种风格上的东西:调用数据帧data
并不是一个好主意-这是基本函数的名称(但是如果执行此操作,则不会立即发生任何事情)。