dplyr-mutate修改列
2020-10-03 本文已影响0人
Mylonely
数据集预览
image.png增加列
计算航行速度Speed
dt1 <- flights %>% mutate(Speed = distance/air_time)
dt1 %>% select(last_col())
image.png
mutate传入表达式即可在最后一列生成新变量;
transmute()只保留新变量
flights %>% transmute(Speed = distance/air_time)
image.png
如果要进行原列修改,比如修改单位,只要传入原变量名即可
dt1 %>% transmute(Speed = Speed*60)
image.png
mutate变量重编码
if_else
dt1 %>% select(distance) %>% mutate(if_else(distance>mean(distance),true = "远",false="近")) %>%head()
image.png
对于两类别情形的编码,我们可以利用if_else语句完成,分别传入条件,true值,false值即可
case_when
dt1 %>% select(distance) %>% mutate(type=case_when(
distance >1389 ~ "非常远",
distance > 872 ~ "较远",
distance > 502 ~ "一般",
distance > 100 ~ "较近",
distance <= 100 ~ "非常近"
))
image.png
case_when将高水平条件放在最前面。如果反过来,那么编码将会只有一个类,即最低水平类别
image.png
此外,如果我们生成的是有序的因子型变量,需要另外再做出声明
##声明因子型
dt2 <-dt1 %>% select(distance) %>% mutate(type=case_when(
distance >1389 ~ "非常远",
distance > 872 ~ "较远",
distance > 502 ~ "一般",
distance > 100 ~ "较近",
distance <= 100 ~ "非常近"
)) %>% mutate(type = factor(type,levels = c("非常近","较近","一般","较远","非常远")))