我的資料如下所示:
library(tidyverse)
#> Warning: package 'readr' was built under R version 4.1.2
set.seed(123)
dat <- tibble(
mcq_option_1 = sample(c(0,1), replace = TRUE, size = 100),
mcq_option_2 = sample(c(0,1), replace = TRUE, size = 100),
mcq_option_3 = sample(c(0,1), replace = TRUE, size = 100),
mcq_option_4 = sample(c(0,1), replace = TRUE, size = 100),
mcq_option_5 = sample(c(0,1), replace = TRUE, size = 100)
)
由reprex 包于 2022-02-21 創建(v2.0.1)
我的目標是創建每個 mcq 選項被選中的時間的條形圖(每列中的計數為 1)。實作這一目標的最快資料處理技術是什么?我應該先旋轉更長的時間,然后使用 mutate 創建一個新的計數變數嗎?或者我可以在 ggplot 函式中快速執行此操作嗎?
有比這更短/更好的解決方案嗎?
new <- dat %>% pivot_longer(
cols = everything(),
names_to = 'options',
values_to = 'active'
)
new %>% filter(active == 1) %>% group_by(options) %>% summarise(n = n())
uj5u.com熱心網友回復:
不確定您是在尋找更好的執行速度還是更短的代碼。您至少可以通過首先跨列求和然后旋轉來縮短代碼。
dat %>%
summarise(across(.fns = sum)) %>%
pivot_longer(everything()) %>%
ggplot(aes(name, value))
geom_col()
uj5u.com熱心網友回復:
如果您只需要知道 and 的向量中 s 的數量,1您可以簡單地取. 這可以通過指定在內部完成。這避免了您使用, &引入的一些額外步驟。10sumggplot::stat_summary()fun = "sum"filter()group_by()summarize()
library(tidyverse)
set.seed(123)
dat <- tibble(mcq_option_1 = sample(c(0,1), replace = TRUE, size = 100), mcq_option_2 = sample(c(0,1), replace = TRUE, size = 100), mcq_option_3 = sample(c(0,1), replace = TRUE, size = 100), mcq_option_4 = sample(c(0,1), replace = TRUE, size = 100), mcq_option_5 = sample(c(0,1), replace = TRUE, size = 100))
dat %>%
pivot_longer(cols = everything(),
names_to = 'options',
values_to = 'active') %>%
ggplot(aes(options, active))
stat_summary(fun = "sum", geom = "bar")

由reprex 包于 2022-02-21 創建(v2.0.1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/430659.html
