[英]R: How to get factor levels found in data
如何列出數據中存在的因子水平?
讓我們初始化數據:
df <- data.frame(
v1 = c( 'b', 'c', 'a', NA ),
v2 = c( 2, 1, 3, 1 )
)
df$v1 <- factor(
df$v1,
levels = c( 'a', 'b', 'c', 'd' ),
ordered = TRUE
)
現在, levels()
給出了所有級別,包括數據中未找到的級別:
> levels( df$v1 )
[1] "a" "b" "c" "d"
unique()
給出所有唯一值,包括NA
:
> unique( df$v1 )
[1] b c a <NA>
Levels: a < b < c < d
我正在尋找的是:
> levels( df$v1, indata = TRUE )
[1] "a" "b" "c"
我們可以使用droplevels
levels(droplevels(df$v1))
[1] "a" "b" "c"
或者再次包裝factor
以重置levels
levels( factor(df$v1) )
[1] "a" "b" "c"
為什么不只使用unique
,然后使用 subset 來過濾掉 NA?
Filter(unique(df$v1, \(x) !is.na(x))
我們還可以使用基本子集:
unique(df$v1[!is.na(df$v1)])
或者我們可以使用purrr::discard
library(purrr)
unique(df$v1) %>% discard(is.na)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.