r 選取從小到大的資料 R語言常用資料整理方法

2021-10-13 09:39:05 字數 2679 閱讀 8168

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的使...