簡體   English   中英

如何在 dplyr/forcats R 中使用因子(f)語法?

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

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