我想創建一個資料框,在其中匯總觀察值、平均值和中位數等值,并且我想嵌套其 ggplot 直方圖。為此,我將使用 iris 資料集。
這是我的第一次嘗試:
iris %>%
pivot_longer(-Species,
names_to = "Vars",
values_to = "Values") %>%
group_by(Vars) %>%
summarise(obs = n(),
mean = round(mean(Values),2),
median = round(median(Values),2))
所以它給了我:
# A tibble: 4 x 4
Vars obs mean median
<chr> <int> <dbl> <dbl>
1 Petal.Length 150 3.76 4.35
2 Petal.Width 150 1.2 1.3
3 Sepal.Length 150 5.84 5.8
4 Sepal.Width 150 3.06 3
這是預期的表:
# A tibble: 4 x 5
Vars obs mean median plot
<chr> <int> <dbl> <dbl> <list>
1 Petal.Length 150 3.76 4.35 <gg>
2 Petal.Width 150 1.2 1.3 <gg>
3 Sepal.Length 150 5.84 5.8 <gg>
4 Sepal.Width 150 3.06 3 <gg>
這是我嘗試過的:
iris %>%
pivot_longer(-Species,
names_to = "Vars",
values_to = "Values") %>%
group_by(Vars) %>%
nest() %>%
mutate(metrics = lapply(data, function(df) df %>% summarise(obs = n(), mean = mean(Values), median = median(Values))),
plots = lapply(data, function(df) df %>% ggplot(aes(Values)) geom_histogram()))
快到了,我看到了這個:
# A tibble: 4 x 4
# Groups: Vars [4]
Vars data metrics plots
<chr> <list> <list> <list>
1 Sepal.Length <tibble [150 × 2]> <tibble [1 × 3]> <gg>
2 Sepal.Width <tibble [150 × 2]> <tibble [1 × 3]> <gg>
3 Petal.Length <tibble [150 × 2]> <tibble [1 × 3]> <gg>
4 Petal.Width <tibble [150 × 2]> <tibble [1 × 3]> <gg>
但是我不知道如何使用 obs、mean、median 和 plots 列查看預期的 tibble,而沒有 data 和 metrics 列。任何幫助將不勝感激。
uj5u.com熱心網友回復:
我們可以使用cur_data()insummarise并list通過包裝在 a 中獲取輸出
library(dplyr)
library(ggplot2)
library(tidyr)
out <- iris %>%
pivot_longer(-Species,
names_to = "Vars",
values_to = "Values") %>%
group_by(Vars) %>%
summarise(obs = n(),
mean = round(mean(Values),2),
median = round(median(Values),2),
plots = list(ggplot(cur_data(), aes(Values)) geom_histogram()))
-輸出
out
# A tibble: 4 × 5
Vars obs mean median plots
<chr> <int> <dbl> <dbl> <list>
1 Petal.Length 150 3.76 4.35 <gg>
2 Petal.Width 150 1.2 1.3 <gg>
3 Sepal.Length 150 5.84 5.8 <gg>
4 Sepal.Width 150 3.06 3 <gg>
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/315839.html
上一篇:使用gt表繪制每行直方圖-R
下一篇:如何讓折線圖“跳過”資料點
