为了账号安全,请及时绑定邮箱和手机立即绑定

错误-替换有[x]行,数据有[y]

错误-替换有[x]行,数据有[y]

天涯尽头无女友 2019-11-19 08:52:22
我在数据框(“ 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错误...替换有#个项目,需要#
查看完整描述

2 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

你可以用 cut


 df$valueBin <- cut(df$value, c(-Inf, 250, 500, 1000, 2000, Inf), 

    labels=c('<=250', '250-500', '500-1,000', '1,000-2,000', '>2,000'))

数据

 set.seed(24)

 df <- data.frame(value= sample(0:2500, 100, replace=TRUE))


查看完整回答
反对 回复 2019-11-19
  • 2 回答
  • 0 关注
  • 2768 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信