У меня есть числовой столбец ( "значение" ) в dataframe ( "df" ), и я хотел бы создать новый столбец ( "valueBin" ) на основе "value". У меня есть следующий условный код для определения 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 ", value = c (NA, NA, NA,: замена имеет 6530 строк, данные имеют 6532"
Каждый элемент df$value
должен вписываться в один из моих операторов which()
. В df$value
отсутствуют пропущенные значения. Хотя даже если я запускаю только первый условный оператор (< = 250), я получаю ту же самую ошибку с "...replacement has 6530 rows..."
, хотя существует путь меньше, чем 6530 записей со значением <= 250, а значение никогда не является NA.
Эта ссылка SO отмечает аналогичную ошибку, когда использование aggregate() было ошибкой, но рекомендуется установить версию R, которая у меня есть. Кроме того, в отчете об ошибке говорится, что он исправлен. Совокупная ошибка R: " замена имеет <foo> строки, данные имеют <bar>
Эта ссылка SO больше связана с моей проблемой, и проблема здесь была связана с его/ее условной логикой, которая вызывала меньшее количество элементов заменяемого массива. Я предполагаю, что это тоже должна быть моя проблема, и сначала я понял, что должен быть "< =" вместо "<" или наоборот, но после проверки я уверен, что все они правильны, чтобы покрыть каждое значение "значение" без перекрытий. Ошибка R в '[< -. data.frame'... замена имеет # элемента, требуется #