簡體   English   中英

因子()中未指定的級別

[英]Unspecified levels in factor()

我正在使用R中帶有代碼簿的數據集,它基本上告訴我我的因子變量的不同級別的標簽應該是什么。 例如,使用代碼簿,我可以看到在我的“性別”變量中,0是“女性”而1是“男性”。 我正在使用此信息相應地標記變量中的值。

但是,我最近發現,令我沮喪的是,碼本不完整。 例如,它告訴我一個變量1表示“是”,2表示“否”,但不告訴我7s,8s和9是什么,我可以在數據中看到。 我想做的是將此變量標記為如下(或類似的東西):

data$variable <- factor(data$variable,
                        levels=c(1, 2, 7, 8, 9),
                        labels=c("Yes", "No", "7", "8", "9"))

基本上,我希望將代碼簿中未指定的所有級別標記為自己。 我遇到的問題是這個碼本缺少其中的一些,我真的不必手動查看我的數據中的所有未定義值來構造上述代碼以用於變量。 另外,如果我只是遺漏那些缺失的等級,R會自動將它們標記為“NA”,這是我不想要的。

簡介:我試圖弄清楚如何使用因子(),而不是將所有未指定的級別標記為“NA”,它將它們標記為自己。

您可以在創建因子后轉換級別,以便我們可以將其用於我們的優勢。

mydat <- c(1, 2, 3,2,3,4,3,2,1,2,4,4,6,5,7,8,9)
# convert to factor ignoring code book
dat <- factor(mydat)
# Create map corresponding to codebook levels
mymap <- c("1" = "Yes", "2" = "No")
# Figure out which levels are accounted for by codebook
id <- levels(dat) %in% names(mymap)
# Convert to appropriate values
levels(dat)[id] <- mymap[levels(dat)[id]]

或者(可能更容易)

# alternatively we can construct the map if we have two vectors
# of the value and the codebook value
val <- c(1, 2)
lev <- c("Yes", "No")

dat <- factor(mydat)
levels(dat)[val] <- lev

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM