美文网首页
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