dplyr是乙個功能強大的r資料處理包,本篇主要介紹該包的一些函式。
使用nycflights13的flights資料,如下
library(dplyr)
library(nycflights13)
> flights
# a tibble: 336,776 x 19
year month day dep_time sched_dep_time
1 2013 1 1 517 515
2 2013 1 1 533 529
3 2013 1 1 542 540
4 2013 1 1 544 545
5 2013 1 1 554 600
6 2013 1 1 554 558
7 2013 1 1 555 600
8 2013 1 1 557 600
9 2013 1 1 557 600
10 2013 1 1 558 600
# ... with 336,766 more rows, and 14 more
# variables: dep_delay , arr_time ,
# sched_arr_time , arr_delay ,
# carrier , flight , tailnum ,
# origin , dest , air_time ,
# distance , hour , minute ,
# time_hour
1. select 選擇所需要的列,可以有多種選擇方法
#選擇year列
select(flights, year)
#選擇1到3列
select(flights, 1:3)
#選擇year到day列
select(flights, year:day)
#選擇包含 time 字元的列
select(flights, contains("time"))
#選擇s開頭的列
select(flights,starts_with("s"))
#反選,在選擇前面加 -
select(flights, -(1:6))
select(flights, -(year:day))
2. arrange 對資料按要求排序
#按照year列進行排序,預設由小到大
arrange(flights, year)
#按照 year 和 dep_time兩列進行排序
arrange(flights, year, dep_time)
#按照dep_time倒序排序
arrange(flights, desc(dep_time))
#將dep_time為na的資料提到最前面
#is.na(dep_time) 將dep_time 轉換為true和false
#true為1,false為0,再用!表示反選
arrange(flights, !is.na(dep_time))
3. filter 篩選合適的資料
#篩選dep_time大於1000的資料
filter(flights, dep_time > 1000)
#篩選sched_dep_time小於dep_time的資料
filter(flights, sched_dep_time < dep_time)
#篩選month為2和day為25的資料
filter(flights, month == 2 & day == 25)
#篩選month為1或者month為10的資料
filter(flights, month == 1 | month == 10)
4. mutate 資料轉換
#生成speed列
mutate(flights, speed = distance/air_time)
#將飛行時間由分鐘變成hour
mutate(flights,air_hour = air_time/60)
"mutate可以使用多種運算如下
%/%:整除
%%:求餘
log2()、 log10()"
5. summarize 資料分組聚合
使用group_by 將資料按照每一天進行分組
summarise中,n()統計該天的航班數
mean()計算平均飛行時間,需要移除na,否則有na的資料計算結果均為na
flights %>%
group_by(year, month, day) %>%
summarise(count =n(),
mean_air_time = mean(air_time, na.rm = true))
summarize可用函式:
sum: 統計總數
sum(is.na(x))統計x中na的數量
quantile(x, 0.25),返回x的0.25到0.75的百分位中的數目
sd:標準差; median:中位數
練習:可以使用 ?flights檢視每一列的說明相出盡可能多的方法,篩選出dep_time, depdelay, arr_time, arr_delay四列。
找出乙個總是遲到10分鐘的航班,嘗試使用多種方法。
找出遲到最嚴重的carrier。
對於每乙個目的地dest,計算總的遲到時間。
找出每天中遲到最短的時間小時段。
Java常用排序演算法(從小到大
1 氣泡排序 特點 效率低,實現簡單。思想 將序列中所有元素兩兩比較,將最大的放在最後面。將剩餘序列中所有元素兩兩比較,將最大的放在最後面。重複第二步,直到只剩下乙個數。32 43 23 13 5 32 43 23 13 5 32 23 43 13 5 32 23 13 43 5 32 23 13 ...
插入從小到大的整型陣列
老師給的乙個題目,就是給定一整型陣列,已經從小到大排列,然後插入一整數,要求插入的位置使得元素還是按照從小到大的順序排列,一下是 不過有一點小問題,值得注意 includeusing namespace std define maxlen 30 int main cout 請按照從小到大的順序依次輸...
排序矩陣中的從小到大第k個數
在乙個排序矩陣中找從小到大的第 k 個整數。排序矩陣的定義為 每一行遞增,每一列也遞增。您在真實的面試中是否遇到過這個題?yes 樣例給出 k 4和乙個排序矩陣 1 5 7 3 7 8 4 8 9 返回5。挑戰 使用o k log n 的方法,n為矩陣的寬度和高度中的最大值。點題 typedef的使...