如何在 R 中刪除資料框子集中因子的水平?


有兩種方法可以刪除資料框子集中因子的水平,一種是使用因數函式,另一種是使用 lapply。

示例

> df <- data.frame(alphabets=letters[1:10], numbers=seq(0:9))
> levels(df$alphabets)
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
> subdf <- subset(df, numbers <= 6)
> subdf
alphabets numbers
1 a 1
2 b 2
3 c 3
4 d 4
5 e 5
6 f 6
> levels(subdf$alphabets)
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"

儘管我們已經建立了一個子集,但因子變數字母的水平仍然顯示為 10 個水平。如果我們想刪除因子水平,則可以透過以下方式進行

使用因子函式

> subdf$alphabets <- factor(subdf$alphabets)
> levels(subdf$alphabets)
[1] "a" "b" "c" "d" "e" "f"

使用 lapply

> subdf[] <- lapply(subdf, function(x) if(is.factor(x)) factor(x) else x)
> levels(subdf$alphabets)
[1] "a" "b" "c" "d" "e" "f"

更新於: 2020-07-06

648 次瀏覽

開啟你的 事業

完成課程即可獲得認證

開始
廣告