第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

清理因子水平(折疊多個(gè)級(jí)別/標(biāo)簽)

清理因子水平(折疊多個(gè)級(jí)別/標(biāo)簽)

眼眸繁星 2019-07-26 17:02:07
清理因子水平(折疊多個(gè)級(jí)別/標(biāo)簽)清理包含需要折疊的多個(gè)級(jí)別的因子的最有效(即有效/適當(dāng))方法是什么?也就是說(shuō),如何將兩個(gè)或多個(gè)因子級(jí)別組合成一個(gè)。這是一個(gè)示例,其中“是”和“Y”這兩個(gè)級(jí)別應(yīng)折疊為“是”,“否”和“N”折疊為“否”:## Given: x <- c("Y", "Y", "Yes", "N", "No", "H")   # The 'H' should be treated as NA## expectedOutput[1] Yes  Yes  Yes  No   No   <NA>Levels: Yes No  # <~~ NOTICE ONLY **TWO** LEVELS一個(gè)選擇當(dāng)然是在手工使用sub和朋友之前清理琴弦。另一種方法是允許重復(fù)標(biāo)簽,然后丟棄它們## Duplicate levels ==> "Warning: deprecated"x.f <- factor(x, levels=c("Y", "Yes", "No", "N"), labels=c("Yes", "Yes", "No", "No"))## the above line can be wrapped in either of the next two linesfactor(x.f)      droplevels(x.f)但是,有更有效的方法嗎?雖然我知道levels和labels參數(shù)應(yīng)該是向量,但我嘗試了列表和命名列表以及命名向量以查看發(fā)生了什么不用說(shuō),以下沒(méi)有一個(gè)讓我更接近我的目標(biāo)。  factor(x, levels=list(c("Yes", "Y"), c("No", "N")), labels=c("Yes", "No"))   factor(x, levels=c("Yes", "No"), labels=list(c("Yes", "Y"), c("No", "N")))   factor(x, levels=c("Y", "Yes", "No", "N"), labels=c(Y="Yes", Yes="Yes", No="No", N="No"))   factor(x, levels=c("Y", "Yes", "No", "N"), labels=c(Yes="Y", Yes="Yes", No="No", No="N"))   factor(x, levels=c("Yes", "No"), labels=c(Y="Yes", Yes="Yes", No="No", N="No"))
查看完整描述

3 回答

?
動(dòng)漫人物

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超10個(gè)贊

由于問(wèn)題的標(biāo)題是清理因子水平(折疊多個(gè)級(jí)別/標(biāo)簽),forcats為了完整起見(jiàn),此處也應(yīng)該提到包。forcats于2016年8月在CRAN上亮相。

有幾種便利功能可用于清理因子水平:

x <- c("Y", "Y", "Yes", "N", "No", "H") library(forcats)

將要素級(jí)別折疊為手動(dòng)定義的組

fct_collapse(x, Yes = c("Y", "Yes"), No = c("N", "No"), NULL = "H")#[1] Yes  Yes  Yes  No   No   <NA>#Levels: No Yes

手動(dòng)改變因子水平

fct_recode(x, Yes = "Y", Yes = "Yes", No = "N", No = "No", NULL = "H")#[1] Yes  Yes  Yes  No   No   <NA>#Levels: No Yes

自動(dòng)重新標(biāo)記因子水平,必要時(shí)崩潰

fun <- function(z) {
  z[z == "Y"] <- "Yes"
  z[z == "N"] <- "No"
  z[!(z %in% c("Yes", "No"))] <- NA
  z}fct_relabel(factor(x), fun)#[1] Yes  Yes  Yes  No   No   <NA>#Levels: No Yes

請(qǐng)注意,它fct_relabel()適用于因子級(jí)別,因此它需要一個(gè)因子作為第一個(gè)參數(shù)。另外兩個(gè)函數(shù),fct_collapse()fct_recode()接受一個(gè)字符向量,它是一個(gè)未記錄的特征。

首次出現(xiàn)重新排序因子水平

OP給出的預(yù)期輸出是

[1] Yes  Yes  Yes  No   No   <NA>Levels: Yes No

這里的級(jí)別按其出現(xiàn)的順序排序x,與默認(rèn)級(jí)別不同(?factor:默認(rèn)情況下,因子的級(jí)別已排序)。

為了與預(yù)期輸出一致,可以通過(guò)fct_inorder() 折疊級(jí)別之前使用來(lái)實(shí)現(xiàn):

fct_collapse(fct_inorder(x), Yes = c("Y", "Yes"), No = c("N", "No"), NULL = "H")fct_recode(fct_inorder(x), Yes = "Y", Yes = "Yes", No = "N", No = "No", NULL = "H")

現(xiàn)在,兩者都以相同的順序返回預(yù)期輸出。


查看完整回答
反對(duì) 回復(fù) 2019-07-26
?
哈士奇WWW

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超6個(gè)贊

也許命名向量作為鍵可能是有用的:

> factor(unname(c(Y = "Yes", Yes = "Yes", N = "No", No = "No", H = NA)[x]))[1] Yes  Yes  Yes  No   No   <NA>Levels: No Yes

這看起來(lái)與你上一次嘗試非常相似......但是這個(gè)有效:-)


查看完整回答
反對(duì) 回復(fù) 2019-07-26
  • 3 回答
  • 0 關(guān)注
  • 807 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)