如果不想麻煩每次設置工作目錄蛛倦,可以多保存幾個R文件著隆。需要哪個就打開哪個。
工作流-基礎
-
使用RStudio 快捷鍵:Alt+-(Alt 加上減號)梯轻。RStudio 會自動在<- 的兩端加上空格。
-
對象名稱必須以字母開頭尽棕,并且只能包含字母喳挑、數(shù)字、_ 和.
-
快速輸入變量萄金,輸入開頭蟀悦,按Tab;再次輸入可以按后按Ctrl+ ↑氧敢。
-
Alt+Shift+K顯示所有快捷鍵日戈。
dplyr數(shù)據(jù)轉換
終于知道變量名下面的<chr>代表啥了。
? int 表示整數(shù)型變量孙乖。
? dbl 表示雙精度浮點數(shù)型變量浙炼,或稱實數(shù)。
? chr 表示字符向量唯袄,或稱字符串弯屈。
? dttm 表示日期時間(日期+ 時間)型變量。
? lgl 表示邏輯型變量恋拷,是一個僅包括TRUE 和FALSE 的向量资厉。
? fctr 表示因子,R 用其來表示具有固定數(shù)目的值的分類變量蔬顾。
? date 表示日期型變量宴偿。
1. 準備
install.packages("nycflights13") library(nycflights13) library(tidyverse)
因為要用的數(shù)據(jù)flights是nycflights13包里的,所以要先加載诀豁。
-- Conflicts ------------------------------------- tidyverse_conflicts() --
x dplyr::filter() masks stats::filter()
x dplyr::lag() masks stats::lag()
dplyr包覆蓋了基礎R包中的兩個函數(shù)窄刘,如果你要使用被覆蓋的函數(shù),需要輸入他們的完整名稱舷胜,以::連接包名和函數(shù)名娩践。
flights #就瞅一眼,看看幾行幾列
?flights #好好瞅瞅每列表示什么意思
View(flights)#以表格的形式好好瞅瞅
class(flights)#了解他的數(shù)據(jù)類型
2. dplyr包的核心函數(shù)
? 按變量篩選觀測值(filter())。
? 對行進行重新排序(arrange())翻伺。
? 按名稱選取變量(select())材泄。
? 使用現(xiàn)有變量的函數(shù)創(chuàng)建新變量(mutate())。
? 將多個值總結為一個摘要統(tǒng)計量(summarize())穆趴。
分組操作group_by(),可以和以上函數(shù)聯(lián)合使用脸爱。
dplyr函數(shù)不修改原數(shù)據(jù)框遇汞,只從原數(shù)據(jù)框中生成新數(shù)據(jù)框未妹,如果新生成的數(shù)據(jù)框不賦值給一個新的變量,那么就會丟失空入。
R要么輸出結果络它,要么賦值。將賦值語句用括號括起來則可以同時完成這兩種操作歪赢。
filter(flights, month == 1, day == 1) #輸出結果
jan1 <- filter(flights, month == 1, day == 1) #賦值
(dec25 <- filter(flights, month == 12, day == 25))#兩種操作
3.filter進行篩選
(1) 比較運算符
比較運算符:>化戳、>=、<埋凯、<=点楼、!=(不等于)和==(等于)
=是賦值操作,a=3是將3這個數(shù)值賦值給a這個變量白对。而==才是平時的數(shù)學中的等于掠廓,意思是比較是否相等,如a==b意思是a的值是否和b的值相等
near(1 / 49 * 49, 1)
#> [1] TRUE
計算機使用的是有限精度運算(顯然無法存儲無限位的數(shù))甩恼,因此請記住蟀瞧,你看到的每個
數(shù)都是一個近似值。比較浮點數(shù)是否相等時条摸,不能使用==悦污,而應該使用near()。
(2)邏輯元算法
& 表示“與”钉蒲、
| 表示“或”切端、
! 表示“非”
x %in% y。這會選取出x 是y 中的一個值時的所有行顷啼。
filter(flights, month == 11 | month == 12) filter(flights, month %in% c(11, 12))
表達意思相同踏枣。
注:%in%是非常好的一個函數(shù),解決了我以前的一個大問題线梗。比如我想找到excel中c列中和a列相同的行椰于。
只需要c%in%a就可以了。
!(x & y)等價于!x | !y仪搔,!(x | y)等價于!x & !y
(3)缺失值
NA瘾婿,表示有一個值,但是不知道具體是啥,相當于個陌生人偏陪。而NULL相當于抢呆,根本沒人。笛谦。抱虐。
NA與NULL的區(qū)分:一個元素值全為NA的向量,它的長度是存在的饥脑,就等于元素的個數(shù)恳邀。而如果把一個向量的所有元素的值都設為NULL,這個向量就變成了“空值”灶轰,其長度為0谣沸,表明“空無一物”。
注:NA為缺失值笋颤,is.na()判斷是否為缺失值乳附,filter() 只能篩選出條件為TRUE 的行;它會排除那些條件為FALSE 和NA 的行伴澄。如果想保留缺失值赋除,可以用這個函數(shù)