dplyr包表格操作学习

2020-06-09  本文已影响0人  小贝学生信

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

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

nycflights13包里的flights数据框

一、筛选指定行

filter(flights, month == 1)
filter(flights, month == 1, day == 1)

1、常用比较符

>>=<<=
!= ==

2、逻辑运算符

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

filter(flights, month == 11 | month == 12)
#选取11与12月的数据,用的是&或比较符
filter(flights, month %in% c(11, 12))   #等同上例

二、表格排序

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

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

arrange(flights, desc(arr_delay))

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

arrange(flights, year, month, day)

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

三、选取指定列

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)
#等号前面为新名,后面为原名

五、添加变量

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)

六、分组统计

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、常用统计方法

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

上一篇下一篇

猜你喜欢

热点阅读