dplyr在x,y-plot中找到最小值

时间:2018-03-19 15:20:29

标签: r dplyr

找到并绘制我在下面制作的X,Y图中的minium,工作代码。 然而,我发现它很难看,并期望更优雅的东西。 tibble,cf,实际上包含两个以上的变量。我把它减少到两个。

谁可以为我提供更优雅的代码?

THX !!

======

ActiveRecord::HasOneThroughCantAssociateThroughCollection (Cannot have a has_one :through association 'Party#organizer' where the :through association 'Party#parties_users' is a collection. Specify a has_one or belongs_to association in the :through option instead.)

2 个答案:

答案 0 :(得分:0)

很抱歉不够明确。在我使用下面的基本R代码之前:

`
if ( length(cf[cf$y > 0.5, c("x")]) > 0 ) {
  xlim <- max(round(cf[cf$y > 0.5, c("x")],1))
} else {
  xlim <- min(round(cf$x,1))
}
`

我使用dplyr重新实现。我想知道我是否选择了最好的dplyr实现,因为它对我来说似乎很冗长:

`
    xlim <- cf %>%  filter(y < 0.5) %>% 
                     arrange(desc(y)) %>% 
                     top_n(1) %>% 
                     select(x)
`

答案 1 :(得分:0)

我认为使用dplyr最简单的方法如下:

xl <- cf %>% filter(y < 0.5) %>% 
  filter(y == max(y)) %>% 
  select(x) %>% 
  as.numeric()

请注意,使用最后一个表达式,您可以将该值用作标量:

ggplot(cf, aes(x, y) ) +
  geom_point(size = 1, colour = "blue") +
  geom_hline(colour = "red", size = 1.2, yintercept = 0.5) +
  geom_vline(colour = "#99CCFF", size = 1, xintercept = xl) +
  labs(title = paste0("Y < 0.5 for X > ", xl))