我在数据框(“ df”)中有一个数字列(“ value”),我想基于“ value”生成一个新列(“ valueBin”)。我有以下条件代码来定义df $ valueBin:
df$valueBin[which(df$value<=250)] <- "<=250"
df$valueBin[which(df$value>250 & df$value<=500)] <- "250-500"
df$valueBin[which(df$value>500 & df$value<=1000)] <- "500-1,000"
df$valueBin[which(df$value>1000 & df$value<=2000)] <- "1,000 - 2,000"
df$valueBin[which(df$value>2000)] <- ">2,000"
我收到以下错误:
“ $<-.data.frame((*tmp*,“ valueBin”,值= c(NA,NA,NA,的错误:替换有6530行,数据有6532”)
的每个元素df$value都应适合我的which()陈述之一。中没有缺失值df$value。尽管即使我只运行第一个条件语句(<= 250),我也得到了完全相同的错误,"...replacement has 6530 rows..."尽管值小于等于250的记录少于6530个,并且值从不为NA。
当使用aggregate()时,此SO链接记录了类似的错误,但它建议安装RI have的版本。加上错误报告说它已修复。 R聚合错误:“替换具有<foo>行,数据具有<bar>”
该SO链接似乎与我的问题更相关,这里的问题是他/她的条件逻辑问题,导致生成替换数组的元素较少。我想这也同样是我的问题,首先我想必须有一个“ <=”而不是“ <”,反之亦然,但是在检查之后,我很确定它们都正确地覆盖了每个值没有重叠的“价值”。 '[<-。data.frame'...中的R错误...替换有#个项目,需要#
凤凰求蛊