我有一个类似于以下的图,其中线型和形状映射到同一变量。我想保留连接的图例,但希望图例中的点在线上方,以便我可以更好地看到线型。任何帮助表示赞赏。
library(tidyverse)
library(grid)
ggplot(mtcars, aes(gear, mpg,
shape = factor(cyl),
linetype = factor(cyl),
color = factor(cyl))) +
geom_point(size = 2) +
stat_summary(fun = mean, geom = "line", size = 1)+
theme(legend.key.width = grid::unit(0.5, "inch"))
Run Code Online (Sandbox Code Playgroud)
我需要在 summarise(n_distinct(...)) 中应用过滤器,如下例所示:
mtcars %>%
group_by(carb) %>%
summarise(x = n_distinct(mpg[cyl == 8]))
Run Code Online (Sandbox Code Playgroud)
但我需要能够提供不同的变量,而不仅仅是 mpg。
我通常会执行下面的代码,但出现错误,指出未找到对象“cyl”。
my_var <- "mpg"
mtcars %>%
group_by(carb) %>%
summarise(x = n_distinct(!!sym(my_var)[cyl == 8]))
Run Code Online (Sandbox Code Playgroud)
我还尝试了以下方法,它可以运行,但没有提供预期的计数;它似乎没有维护这些组:
mtcars %>%
group_by(carb) %>%
summarise(x = n_distinct(pull(filter(., cyl == 8), !!sym(my_var))))
Run Code Online (Sandbox Code Playgroud)
我对其他解决方案持开放态度,但过滤器需要位于 n_distinct 内,因为需要其他没有特定子集的摘要。