1.Создать воспроизводимые примеры данных
Raw_data <- data.frame(Days = -362:1081)
2.Решение с использованием dplyr
и tidyr
:
library(dplyr)
library(tidyverse)
Raw_data_with_groups <- Raw_data %>%
mutate(Days_bin = cut(Days,
breaks = c(min(Days), 0, 5, 30, 60, max(Days)),
labels = c("<=0", "0-5", "5-30", "30-60", ">60")))
Редактировать:
Или, если Вы действительно хотите использовать конструкцию ifelse
: замените &&
на &
или даже лучше, оставьте все вместе:
Raw_data <- data.frame(Days=c(-1,0,3,20,31,61))
df <- mutate(Raw_data,Days_Bin = ifelse(Raw_data$Days <= 0,"0 or early",
ifelse(Raw_data$Days <= 5,"<=5",
ifelse(Raw_data$Days <= 30 ,"<=30",
ifelse(Raw_data$Days <= 60, "<=60", ">60")))))
Возвращает:
Days Days_Bin
1 -1 0 or early
2 0 0 or early
3 3 <=5
4 20 <=30
5 31 <=60
6 61 >60