美文网首页
dplyr-mutate修改列

dplyr-mutate修改列

作者: Mylonely | 来源:发表于2020-10-03 08:52 被阅读0次

    数据集预览

    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("非常近","较近","一般","较远","非常远")))
    

    相关文章

      网友评论

          本文标题:dplyr-mutate修改列

          本文链接:https://www.haomeiwen.com/subject/shziuktx.html