美文网首页
dplyr包表格操作学习

dplyr包表格操作学习

作者: 小贝学生信 | 来源:发表于2020-06-09 20:42 被阅读0次

    学习数据框格式的表格操作技巧
    小插曲:加载dplyr包时,部分依赖包加载失败。提示说需要更新,但总是更新失败,网上查了后,去文件夹把该包彻底删除后,重新安装就好了。

    library(dplyr)
    library(nycflights13) 操作数据示例

    nycflights13包里的flights数据框

    一、筛选指定行

    • filter()函数
      注意基础函数也有一个filter函数,所以一定要先加载dplyr包。
    • 函数参数主要包括两部分:原数据框,筛选条件(可多个)
      见下列示例就很容易明白
    filter(flights, month == 1)
    filter(flights, month == 1, day == 1)
    

    1、常用比较符

    >>=<<=
    != ==

    2、逻辑运算符

    常用于变量的多范围选择
    &
    |

    filter(flights, month == 11 | month == 12)
    #选取11与12月的数据,用的是&或比较符
    
    • 值得注意的是不能写成filter(flights, month == 11 | 12)
    • 简写的形式可以是 %in%,如下例
    filter(flights, month %in% c(11, 12))   #等同上例
    

    二、表格排序

    表格排序一般指的是行排序

    • arrange()函数
    • 一般也是两个参数:数据框,列名

    (1)默认为升序排序,desc()可设置为降序排列

    arrange(flights, desc(arr_delay))
    

    (2)当参数有多个列名时,使后面的列在前面排序的基础上继续排序。生动的例子就是年、月、日。可以脑补下两年、每年12个月、每月30天的三列排序

    arrange(flights, year, month, day)
    

    NA值无论在升序,还是降序排列中都是排在最后。

    三、选取指定列

    • select()函数
    • 参数同样是数据框、列名
    select(flights, year, month, day)
    select(flights, year:day)
    select(flights, -year:day)   #反选
    

    此外也支持正则表达式,之后的章节会学到

    用法引申:将数据框中的指定列放在前列

    names(flights)
    test <- select(flights, month, day, everything())
    names(test)
    

    四、更改列名

    rename(flights, days = day)
    #等号前面为新名,后面为原名
    

    五、添加变量

    • mutate()函数
    flights_sml <- select(flights,distance, air_time)
    mutate(flights_sml, speed = distance / air_time * 60)
    #在flights_sml中增加speed列
    
    #transmute()函数可将新增列独立出来
    transmute(flights_sml,speed = distance / air_time * 60)
    
    • 常用的创建运算符函数有 +-*/^
      %/% (整数除法)和 %% (求余)
      对数函数: log() 、 log2() 和 log10()

    六、分组统计

    • summarize() 统计函数,常搭配group_by()分组函数使用
      如下代码,需要先设置中间的分组数据(month),再进行目标分组统计(dep_delay)均值
    by_month <- group_by(flights,month)
    summarize(by_month, dep = mean(dep_delay, na.rm = TRUE))
    
    6-1

    1、管道通道符

    如上进行分组统计时,要先确立一个分组中间数据,然后再进行分组统计;可以使用%>%通道符一步到位。示例见下

    flights %>%
      group_by(month) %>%
      summarize(delay = mean(dep_delay, na.rm = TRUE))
    

    如上,一般依次分别交代原数据、分组变量、统计变量及方法。再如下一个较复杂的例子

    delays <- flights %>%
    group_by(dest) %>%
    summarize(
    count = n(),   #对每组计数
    #count = sum(!is_na())  #对非缺失值计数
    dist = mean(distance, na.rm = TRUE),
    delay = mean(arr_delay, na.rm = TRUE)
    ) %>%
    filter(count > 20, dest != "HNL")
    
    6-2

    2、常用统计方法

    • mean()median()
    • 方差sd() 、 四分位距IQR() 、绝对中位差mad()
    • min()quantile(x, 0.25)max()
    • 唯一值数n_distinct()
    • 逻辑值的计数和比例: sum(x > 10)mean(y == 0),由于针对每个观测值会分为TRUE与FALSE,因此分别为求计数与比例。

    绝对中位差:用原数据减去中位数后得到的新数据的绝对值的中位数。常用来估计标准差,估计标准差=1.4826*绝对中位差。

    相关文章

      网友评论

          本文标题:dplyr包表格操作学习

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