[英]How to use the factor(f) syntax in dplyr/ forcats package in R?
我正在嘗試做一些非常簡單的事情,即使用 R 中的 forcats package 來處理因子。 我有一個帶有一些因子變量的 dataframe,其中一個是性別,我只是試圖使用 fct_count 來計算變量的出現。 語法在文檔中顯示為fct_count(f)
(這可能更容易。)。
我正在嘗試以 dplyr 方式執行此操作,使用 pipe 運算符而不是 $ 語法來訪問變量,但它似乎不起作用。 我只是從根本上誤解了語法嗎?
pid <- c('id1','id2','id3','id4','id5','id6')
gender <- c('Male','Female','Other','Male','Female','Female')
df <- data.frame(pid, gender)
df <- as.tibble(df)
df
# A tibble: 6 x 2
pid gender
<chr> <fct>
1 id1 Male
2 id2 Female
3 id3 Other
4 id4 Male
5 id5 Female
6 id6 Female
# This throws an error
df %>%
mutate(gender = as.factor(gender)) %>%
fct_count(gender) # Error: `f` must be a factor (or character vector).
# This works but doesn't use the nice dplyr select syntax
fct_count(df$gender)
# A tibble: 3 x 2
f n
<fct> <int>
1 Female 3
2 Male 2
3 Other 1
我哪里錯了? dplyr 的新手,很抱歉這個愚蠢的問題,但我似乎無法在任何地方找到一個基本的例子!
fct_count
采用類型為因子或字符的向量,它並不特別了解小標題和數據幀。 所以最簡單的 pipe 將是......
library(dplyr)
library(forcats)
df %>%
pull(gender) %>%
fct_count
#> # A tibble: 3 x 2
#> f n
#> <fct> <int>
#> 1 Female 3
#> 2 Male 2
#> 3 Other 1
您的數據
pid <- c('id1','id2','id3','id4','id5','id6')
gender <- c('Male','Female','Other','Male','Female','Female')
df <- data.frame(pid, gender)
df <- tibble::as_tibble(df)
df
你可以只使用 group_by 和 n()
pid <- c('id1','id2','id3','id4','id5','id6')
gender <- c('Male','Female','Other','Male','Female','Female')
df <- data.frame(pid, gender)
df <- tibble::tibble(df)
df %>%
dplyr::group_by(gender) %>%
dplyr::summarise(cnt_gender = n()) %>%
dplyr::ungroup()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.