R語(yǔ)言學(xué)習(xí)筆記總結(jié)
R語(yǔ)言初步-用dplyr進(jìn)行數(shù)據(jù)轉(zhuǎn)換
五個(gè)核心dplyr函數(shù)
按篩選值觀(guān)測(cè):filter()
對(duì)行進(jìn)行重新排序:arrange()
對(duì)名稱(chēng)選取變量:select()
使用現(xiàn)有變量的函數(shù)創(chuàng)建新的變量:mutate()
mutate:變異 ; 突變 ; 改變 ; 數(shù)據(jù)修改 ; 變種 ; 變化 ; 產(chǎn)生突變
將多個(gè)值總結(jié)為一個(gè)摘要統(tǒng)計(jì)量:summarize()
工作規(guī)律:
- 第一個(gè)參數(shù)是數(shù)據(jù)框
- 隨后的參數(shù)是變量名稱(chēng)
- 輸出新的數(shù)據(jù)框
補(bǔ)充:
關(guān)于數(shù)據(jù)類(lèi)型的說(shuō)明
1.int:整數(shù)型變量
2.dbl:雙精度浮點(diǎn)數(shù)形變量才菠,實(shí)數(shù)
3.chr:字符向量,字符串
4.dttm:日期+時(shí)間格式的數(shù)據(jù)
5.lgl:邏輯型變量贡定,TRUE或者FALSE
6.fctr:因子赋访,R語(yǔ)言中,用它來(lái)表示具有固定數(shù)目的值的分類(lèi)變量
7.data:日期型變量
install.packages("tidyverse")
install.packages("nycflights13")#仍然記得要先安裝
library(nycflights13)#航班信息文件
library(tidyverse)
?flights#查看數(shù)據(jù)信息的說(shuō)明書(shū)
flights#查看航班信息
1.使用filter() 篩選 行
filter(flights,month==1,day==1)
#運(yùn)行后所有一月一日的航班信息自動(dòng)形成新的數(shù)據(jù):
注意R語(yǔ)言中的等于是==缓待,注意輸入細(xì)節(jié)蚓耽。
運(yùn)行結(jié)果:
# A tibble: 842 x 19
year month day dep_time sched_dep_time dep_delay arr_time
<int> <int> <int> <int> <int> <dbl> <int>
1 2013 1 1 517 515 2 830
2 2013 1 1 533 529 4 850
3 2013 1 1 542 540 2 923
4 2013 1 1 544 545 -1 1004
5 2013 1 1 554 600 -6 812
6 2013 1 1 554 558 -4 740
7 2013 1 1 555 600 -5 913
8 2013 1 1 557 600 -3 709
9 2013 1 1 557 600 -3 838
10 2013 1 1 558 600 -2 753
# ... with 832 more rows, and 12 more variables: sched_arr_time <int>,
# arr_delay <dbl>, carrier <chr>, flight <int>, tailnum <chr>,
# origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>, hour <dbl>,
# minute <dbl>, time_hour <dttm>
此時(shí)生成的新數(shù)據(jù)框只是一個(gè)展示,如果想要繼續(xù)使用這個(gè)數(shù)據(jù)旋炒,那就需要~給他一個(gè)名分--比如賦值給Jan1
- 小小技巧~?:Alt鍵和減號(hào)鍵一起按步悠,可以快速打出R語(yǔ)言中的賦值符號(hào)
Jan1 <- filter(flights,month==1,day==1)
熟練操作后,篩選和賦值也可以同步進(jìn)行:
(dec25 <- filter(flights,month==12,day==5))
#運(yùn)行后直接展示生成的數(shù)據(jù)框
結(jié)果:
# A tibble: 969 x 19
year month day dep_time sched_dep_time dep_delay arr_time
<int> <int> <int> <int> <int> <dbl> <int>
1 2013 12 5 16 2159 137 117
2 2013 12 5 27 2035 232 143
3 2013 12 5 31 2229 122 153
4 2013 12 5 32 1930 302 228
5 2013 12 5 38 2359 39 505
6 2013 12 5 50 2046 244 233
7 2013 12 5 56 2359 57 510
8 2013 12 5 155 2130 265 445
9 2013 12 5 457 500 -3 637
10 2013 12 5 512 515 -3 753
# ... with 959 more rows, and 12 more variables: sched_arr_time <int>,
# arr_delay <dbl>, carrier <chr>, flight <int>, tailnum <chr>,
# origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>, hour <dbl>,
# minute <dbl>, time_hour <dttm>
關(guān)于基本運(yùn)算符
- ">"
- ">="
- "<"
- "<="
- "!=" 不等于
- "==" 等于 *很容易和=搞混
常見(jiàn)錯(cuò)誤舉例:
sqrt(2)^2==2 #sqrt()根號(hào)
#運(yùn)行:
[1] FALSE
1/49*49==1
#運(yùn)行:
[1] FALSE
解釋?zhuān)河?jì)算機(jī)后臺(tái)已經(jīng)進(jìn)行了計(jì)算瘫镇,成為一個(gè)近似值所以sqrt(2)等于1.414(浮點(diǎn)數(shù))鼎兽,平方運(yùn)算后也不等于2,運(yùn)行結(jié)果當(dāng)然是FALSE铣除。
比較浮點(diǎn)數(shù)是否相等的函數(shù)near():
near(sqrt(2)^2,2)
運(yùn)行:
[1] TRUE
1/49*49==1
運(yùn)行:
[1] TRUE
關(guān)于邏輯運(yùn)算符
- "&" 與
- "|" 或
- "!" 非
比如:
filter(flights,month==11|month==12)
#運(yùn)行后找到了11和12月運(yùn)行的航班
注意以下寫(xiě)法是錯(cuò)誤的:
filter(flights,month==11|12)
一種簡(jiǎn)寫(xiě)方式:
nov_dec <- filter(flights,month %in% c(11,12))
%in% 代表 month值是11,12的數(shù)據(jù)
簡(jiǎn)寫(xiě)形式:代表變量x(month)是y(11,12)值時(shí)的數(shù)據(jù)
x %in% y
邏輯運(yùn)算符的用法比較復(fù)雜谚咬,在編寫(xiě)代碼的過(guò)程中及時(shí)賦值,利于檢查通孽。
關(guān)于缺失值
NA即not available序宦,表示未知值
但是未知的值≠缺失值:
未知的值本質(zhì)上可以是任何一個(gè)量,兩個(gè)NA是無(wú)法劃等號(hào)的背苦。但是缺失值缺卻可以有準(zhǔn)確的“定位”互捌,給它一個(gè)名稱(chēng)之后仍可以參與運(yùn)算,可以初步理解為未知數(shù)行剂。
設(shè)定某個(gè)值是未知值的辦法:
is.na(X)