问题描述
我遇到了一个展示了mutate
函数用法的命令,如下所示:
chicago = mutate(chicago,tempcat = factor(1 * (tmpd > 80),labels = c("cold","hot")))
我需要帮助来理解上面示例中的factor
函数与mutate
一起使用时的工作方式。
解决方法
tmpd > 80
进入tmpd
列,并根据温度是大于还是小于80产生TRUE
和FALSE
的向量。
表达式1 * (tmpd > 80)
对该逻辑向量执行隐式数值转换,等效于as.numeric(tmpd > 80)
,因此它将所有FALSE
的值更改为{{ 1}},并将0
的值设置为TRUE
。因此,现在您有一堆1
代表“冷”,0
代表“热”。
但我们没有将其保留为数字,而是在其上附加了标签。为此,我们使用函数1
,将表达式factor
作为第一个参数,并将标签1 * (tmpd > 80)
的向量作为第二个参数。因此表达式:
c("cold","hot")
创建一个类factor(1 * (tmpd > 80),labels = c("cold","hot"))
的向量,如果温度高于80,它将包含标签factor
,否则将包含标签hot
。
将其放入cold
内只是让我们告诉R我们希望将此向量作为名为mutate
的列添加到数据帧tempcat