2020-11-02Tidyverse Tips

原文鏈接:https://predictivehacks.com/tidyverse-tips/

tidyverse包對于數(shù)據(jù)處理非常有用鸿捧,是個(gè)好的生產(chǎn)力工具锹安。有些小竅門可以mark一下忽妒,以備日后使用。

(1) select_if|rename if

例子:如果你想在數(shù)據(jù)變量的列名前加前綴“numeric_”姊舵。

library(tidyverse)
iris%>%select_if(is.numeric,  list(~ paste0("numeric_", .)))%>%head()

  numeric_Sepal.Length numeric_Sepal.Width numeric_Petal.Length numeric_Petal.Width
1                  5.1                 3.5                  1.4                 0.2
2                  4.9                 3.0                  1.4                 0.2
3                  4.7                 3.2                  1.3                 0.2
4                  4.6                 3.1                  1.5                 0.2
5                  5.0                 3.6                  1.4                 0.2
6                  5.4                 3.9                  1.7                 0.4

可以用rename_if達(dá)到同樣的目的。

(2)everything

有時(shí)候想讓指定的列放到第一列或最后一列寓落,可以用everything()來實(shí)現(xiàn)括丁。例如:要讓iris數(shù)據(jù)中Species放到數(shù)據(jù)的第一列:

mydataset<-iris%>%select(Species, everything())
mydataset%>%head()
Species Sepal.Length Sepal.Width Petal.Length Petal.Width
1  setosa          5.1         3.5          1.4         0.2
2  setosa          4.9         3.0          1.4         0.2
3  setosa          4.7         3.2          1.3         0.2
4  setosa          4.6         3.1          1.5         0.2
5  setosa          5.0         3.6          1.4         0.2
6  setosa          5.4         3.9          1.7         0.4

放最后一列

mydataset%>%select(-Species, everything())%>%head()
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

(3)relocate

可以精確的把某一列放到另一列之前或之后。舉例:把Petal.Width放到 Sepal.Width之后伶选。

iris%>%relocate(Petal.Width, .after=Sepal.Width)%>%head()
 Sepal.Length Sepal.Width Petal.Width Petal.Length Species
1          5.1         3.5         0.2          1.4  setosa
2          4.9         3.0         0.2          1.4  setosa
3          4.7         3.2         0.2          1.3  setosa
4          4.6         3.1         0.2          1.5  setosa
5          5.0         3.6         0.2          1.4  setosa
6          5.4         3.9         0.4          1.7  setosa

把Petal.Width放到最后

iris%>%relocate(Petal.Width, .after=last_col())%>%head()
  Sepal.Length Sepal.Width Petal.Length Species Petal.Width
1          5.1         3.5          1.4  setosa         0.2
2          4.9         3.0          1.4  setosa         0.2
3          4.7         3.2          1.3  setosa         0.2
4          4.6         3.1          1.5  setosa         0.2
5          5.0         3.6          1.4  setosa         0.2
6          5.4         3.9          1.7  setosa         0.4

(4)pull

有時(shí)候我們用數(shù)據(jù)框史飞,需要選擇一列作為輸出向量,可以用pull做到這一點(diǎn)仰税。例子:如果想要用t.test比較兩種鳶尾花setosa 和 virginica的Sepal.Length构资,可以這么做。

setosa_sepal_length<-iris%>%filter(Species=='setosa')%>%select(Sepal.Length)%>%pull()
virginica_sepal_length<-iris%>%filter(Species=='virginica')%>%select(Sepal.Length)%>%pull()

t.test(setosa_sepal_length,virginica_sepal_length)

 data:  setosa_sepal_length and virginica_sepal_length
t = -15.386, df = 76.516, p-value < 2.2e-16
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -1.78676 -1.37724
sample estimates:
mean of x mean of y 
    5.006     6.588 

(5) reorder

用ggplot2的時(shí)候有時(shí)根據(jù)特定的條件排序某些因子讓人沮喪陨簇。比如我們以Species來繪制Sepal.Width的箱線圖:

iris%>%ggplot(aes(x=Species, y=Sepal.Width))+geom_boxplot()
image.png

假如以Species的中位數(shù)重新排序吐绵,可以用reorder()函數(shù):

iris%>%ggplot(aes(x=reorder(Species,Sepal.Width, FUN = median), y=Sepal.Width))+geom_boxplot()+xlab("Species")
image.png

是不是很方便!:诱馈己单!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市耙饰,隨后出現(xiàn)的幾起案子纹笼,更是在濱河造成了極大的恐慌,老刑警劉巖苟跪,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件廷痘,死亡現(xiàn)場離奇詭異矮嫉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)牍疏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門蠢笋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鳞陨,你說我怎么就攤上這事昨寞。” “怎么了厦滤?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵援岩,是天一觀的道長。 經(jīng)常有香客問我掏导,道長享怀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任趟咆,我火速辦了婚禮添瓷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘值纱。我一直安慰自己鳞贷,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布虐唠。 她就那樣靜靜地躺著搀愧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪疆偿。 梳的紋絲不亂的頭發(fā)上咱筛,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天,我揣著相機(jī)與錄音杆故,去河邊找鬼迅箩。 笑死,一個(gè)胖子當(dāng)著我的面吹牛反番,可吹牛的內(nèi)容都是我干的沙热。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼罢缸,長吁一口氣:“原來是場噩夢啊……” “哼篙贸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起枫疆,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤爵川,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后息楔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寝贡,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡扒披,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了圃泡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片碟案。...
    茶點(diǎn)故事閱讀 40,030評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖颇蜡,靈堂內(nèi)的尸體忽然破棺而出价说,到底是詐尸還是另有隱情,我是刑警寧澤风秤,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布鳖目,位于F島的核電站,受9級特大地震影響缤弦,放射性物質(zhì)發(fā)生泄漏领迈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一碍沐、第九天 我趴在偏房一處隱蔽的房頂上張望狸捅。 院中可真熱鬧,春花似錦抢韭、人聲如沸薪贫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至扯夭,卻和暖如春鳍贾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背交洗。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工骑科, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人构拳。 一個(gè)月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓咆爽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親置森。 傳聞我的和親對象是個(gè)殘疾皇子斗埂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評論 2 355