#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. если ответ решил вашу проблему, вам предлагается нажать на флажок, чтобы принять его …