R中可以處理因子的一切-forcats包(二)

library(tidyverse)

rm(list = ls()) 
options(stringsAsFactors = T)

#構(gòu)建測試數(shù)據(jù)集
df  <- forcats::gss_cat%>%
  select(c("rincome", "denom"))
head(df,3)
數(shù)據(jù)集情況
# 對df的每一列都使用`levels()`函數(shù)
lapply(df, levels) 
查看每列的分類情況
#查看每列分類分布個數(shù)
lapply(df,fct_count)
這個功能比較好长搀,能看到個數(shù)分布情況
#查看每列分類分布比例
lapply(df,fct_count,prop = T)
這個功能更好了赋元,可以看到分布比例小于0.1的變量
# 對df的每一列使用`fct_relevel(..., "Don't know", after = Inf)`
df2 <- lapply(df, fct_relevel, "Don't know", after = Inf) 
lapply(df2, levels) # 可以看到"Don't know"都被排在最后了
批量relevel感覺可能不太實(shí)用
# 3. 按照因子因素進(jìn)行排序----------------------------------------------------------------------

# fct_inorder(): 按照第一次出現(xiàn)的順序
# 
# fct_infreq(): 按照每個水平出現(xiàn)的頻率(從大到凶拭獭)
# 
# fct_inseq(): 按照數(shù)字大小

f <- factor(c("b", "b", "a", "c", "c", "c"))
f #默認(rèn)按字母順序
默認(rèn)按照字母順序要牢記
fct_inorder(f) # 按第一次出現(xiàn)的順序
第一次出現(xiàn)的順序一般沒啥意義,所以覺得不太實(shí)用
fct_infreq(f) # 按出現(xiàn)的頻率從大到小排列
一般經(jīng)常以頻率最高的為參考組炕吸,所以這個功能比較有用
f <- factor(1:3, levels = c("3", "2", "1"))
fct_inseq(f) # 按照數(shù)字順序排列,雖然你定義的順序是"3", "2", "1"

按照從小到大的順序排序
#繪圖展示
starwars%>%
  filter(!is.na(hair_color))%>%
  ggplot(aes(x = hair_color,fill = hair_color))+
  geom_bar() + 
  coord_flip()
原始圖迎罗,刪除缺失是因為缺失會始終排在第一個
#按照頻率排序
starwars%>%
  filter(!is.na(hair_color))%>%
  ggplot(aes(x = fct_infreq(hair_color),fill = hair_color))+
  geom_bar() + 
  coord_flip()

按照頻率排序钻注,看這里順多了
# 4. reorder函數(shù)操作,按照其他列順序進(jìn)行操作----------------------------------------------------------------------
 #生成一個簡單的tibble
df <- tibble::tribble(
  ~color,     ~a, ~b,
  "blue",      1,  2,
  "green",     6,  2,
  "purple",    3,  3,
  "red",       2,  3,
  "yellow",    5,  1
)
模擬數(shù)據(jù)集
df$color <- factor(df$color)
df$color
默認(rèn)順序
# 按照a這一列從小到大的順序,排序color這一列毛俏,
# 可以看到color的levels已經(jīng)變了
fct_reorder(df$color, df$a, min)
按照a列的大小對顏色列進(jìn)行排序
#fct_reorder()用于畫圖小例子
boxplot(Sepal.Width ~ Species, data = iris)
boxplot(Sepal.Width ~ fct_reorder(Species, Sepal.Width), data = iris)
boxplot(Sepal.Width ~ fct_reorder(Species, Sepal.Width, .desc = TRUE), data = iris)

原始圖像

按照Y軸排序

降序排序
#fct_reorder2的例子
chks <- subset(ChickWeight, as.integer(Chick) < 10)
chks <- transform(chks, Chick = fct_shuffle(Chick))
chks
數(shù)據(jù)集
ggplot(chks, aes(Time, weight, colour = Chick)) +
  geom_point() +
  geom_line()
原始圖片
# 圖例的順序和線的順序一樣
ggplot(chks, aes(Time, weight, colour = fct_reorder2(Chick, Time, weight))) +
  geom_point() +
  geom_line() +
  labs(colour = "Chick")
順序一樣了炭庙,其實(shí)我也不太理解
#將因子水平左右移動,默認(rèn)向左移
x <- factor(
  c("Mon", "Tue", "Wed"),
  levels = c("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"),
  ordered = TRUE
)
x
原始因子水平
fct_shift(x)
默認(rèn)移動到最左側(cè)
fct_shift(x, 2)
移動超過邊界后會從最后再開始
fct_shift(x, -1)#向右移動
這個有用
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末煌寇,一起剝皮案震驚了整個濱河市焕蹄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌阀溶,老刑警劉巖腻脏,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異银锻,居然都是意外死亡永品,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門击纬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鼎姐,“玉大人,你說我怎么就攤上這事更振】唤埃” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵肯腕,是天一觀的道長献宫。 經(jīng)常有香客問我,道長乎芳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任帖池,我火速辦了婚禮奈惑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘睡汹。我一直安慰自己肴甸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布囚巴。 她就那樣靜靜地躺著原在,像睡著了一般。 火紅的嫁衣襯著肌膚如雪彤叉。 梳的紋絲不亂的頭發(fā)上庶柿,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機(jī)與錄音秽浇,去河邊找鬼浮庐。 笑死,一個胖子當(dāng)著我的面吹牛柬焕,可吹牛的內(nèi)容都是我干的审残。 我是一名探鬼主播梭域,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼搅轿!你這毒婦竟也來了病涨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤璧坟,失蹤者是張志新(化名)和其女友劉穎既穆,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沸柔,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡循衰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了褐澎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片会钝。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖工三,靈堂內(nèi)的尸體忽然破棺而出迁酸,到底是詐尸還是另有隱情,我是刑警寧澤俭正,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布奸鬓,位于F島的核電站,受9級特大地震影響掸读,放射性物質(zhì)發(fā)生泄漏串远。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一儿惫、第九天 我趴在偏房一處隱蔽的房頂上張望澡罚。 院中可真熱鬧,春花似錦肾请、人聲如沸留搔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽隔显。三九已至,卻和暖如春饵逐,著一層夾襖步出監(jiān)牢的瞬間括眠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工倍权, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留哺窄,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像萌业,于是被迫代替她去往敵國和親坷襟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容