Замена значений в нескольких столбцах кадра данных на основе числовых диапазонов - PullRequest
1 голос
/ 30 марта 2019

У меня есть массив данных для нескольких переменных, и я хочу заменить все числовые значения символом, который будет обозначать определенный числовой диапазон. Я НЕ хочу равных диапазонов, поэтому насколько я понимаю, метод cut () не подходит.

В следующем коде, если я сгенерирую фрейм данных, а затем выполню одну или две команды замены, они будут делать именно то, что я хочу. Но когда я запускаю их все вместе, финальная таблица заполняется всеми значениями "f".

#Generate test dataframe

test1<-data.frame(replicate(10,sample(0:1000,100,rep=TRUE)))

#Duplicate dataframe so you can go back and reality check category labels against original data

test<-data.frame(test1)

#These are my replacement commands

  test[test <10] <- "a"
  test[test >=10 & test <25] <- "b"
  test[test >=25 & test <50] <- "c"
  test[test >=50 & test <100] <- "d"
  test[test >=100 & test <500] <- "e"
  test[test >=500] <- "f"

однократный запуск любой из команд замены, и вы увидите переменные с этими значениями, замененными соответствующей буквой. Все, что мне нужно, это все значения, все столбцы для этого набора данных. Конечная цель заключается в том, чтобы я мог создать таблицу частот переменных по указанным диапазонам.

1 Ответ

2 голосов
/ 30 марта 2019

Мы можем использовать cut для создания меток на основе указания breaks. Для нескольких столбцов используйте lapply из base R для циклического перебора столбцов, примените cut и присвойте обратно интересующему набору данных

test[] <- lapply(test, function(x) 
     cut(x, breaks = c(-Inf, 10, 25, 50, 100, 500, Inf), labels = letters[1:6]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...