Нужна помощь в понимании функции «фактор» — фактор (1 * (tmpd> 80), метки = c («холодный», «горячий»))

#r #dplyr

#r #dplyr

Вопрос:

Я наткнулся на команду, которая продемонстрировала использование mutate функции следующим образом:

chicago = mutate(chicago, tempcat = factor(1 * (tmpd > 80), labels = c("cold","hot")))

Мне нужна помощь в понимании того, как factor работает функция в приведенном выше примере при использовании вместе с mutate .

Комментарии:

1. Не могли бы вы уточнить, чего именно вы не понимаете?

Ответ №1:

tmpd > 80 берет tmpd столбец и выдает вектор TRUE и FALSE , в зависимости от того, была ли температура больше или меньше 80.

Выражение 1 * (tmpd > 80) выполняет неявное числовое преобразование для этого логического вектора, эквивалентное as.numeric(tmpd > 80) , поэтому оно изменит все FALSE значения на 0 и TRUE значения на 1 . Итак, теперь у вас есть куча 0 s для «холодного» и 1 s для «горячего».

Но вместо того, чтобы оставлять их в виде чисел, мы прикрепляем к ним метки. Мы делаем это с помощью функции factor , передавая наше выражение 1 * (tmpd > 80) в качестве первого аргумента, а вектор меток c("cold", "hot") в качестве второго аргумента. Поэтому выражение:

 factor(1 * (tmpd > 80), labels = c("cold","hot"))
  

создает вектор класса factor , который будет содержать метку hot , если температура была больше 80, и метку cold в противном случае.

Помещение этого внутрь mutate просто позволяет нам сообщить R, что мы хотим добавить этот вектор в качестве столбца, вызываемого tempcat во фрейм данных chicago

Комментарии:

1. Большое спасибо за такое подробное объяснение, оно действительно помогло понять всю команду.

2. если ответ решил вашу проблему, вам предлагается нажать на флажок, чтобы принять его …