簡體   English   中英

R:如何獲取數據中的因子水平

[英]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.

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