小编Y.C*_*och的帖子

使用“summarise”的数据帧列的第二个(或第三个)最大值

假设我有一个像这样的数据框:

group1 <- c('a','a','a','a','a','a','b','b','b','b','b','b','b','b')
group2 <- c('x','y','x','y','x','y','x','y','x','y','x','y','x','y')
value <- round(runif(14, min=0, max=1), digits = 2)

df1 <- as.data.frame(cbind(group1,group2,value))
df1$value <- as.numeric(df1$value)
Run Code Online (Sandbox Code Playgroud)

dplyr通过使用包和函数,可以轻松获得仅包含每组最大值的新数据框summarise

df2 <- summarise(group_by(df1,group1),max_v = max(value))
Run Code Online (Sandbox Code Playgroud)

但我想要的是一个新的数据框,其中包含每组的 3 个最大值,执行类似的操作:

df2 <- summarise(group_by(df1,group1),max_v = max(value),max2_v = secondmax(value),max3_v = thirdmax(value))
Run Code Online (Sandbox Code Playgroud)

有没有办法在不使用该功能的情况下做到这一点sort

r max dataframe dplyr

5
推荐指数
1
解决办法
1413
查看次数

在ggplot2图例中组合线型和颜色

我有一个像这样的数据框:

> head(df_graph)
   treatment year      mean         se
1:        AC 2005 0.3626147 0.03005057
2:        AC 2006 0.3925465 0.02370335
3:        AC 2007 0.3217444 0.02279881
4:        AC 2008 0.3895656 0.05985077
5:        AC 2009 0.3820191 0.01481586
6:        AC 2010 0.3732695 0.03544626
...
Run Code Online (Sandbox Code Playgroud)

和一个(长)ggplot 脚本:

df_graph %>% 

  # way to make 2 lines becoming 4 in a smooth way
  filter(treatment %in% c("Ambient", "Elevated")) %>%
  mutate(treatment = ifelse(treatment == "Ambient", "AA", "EE")) %>%
  bind_rows(df_graph) %>%
  mutate(treatment_group = ifelse(treatment %in% c("Ambient", "AC", "AF", "AA"),"treatment1","treatment2"),
         line_type = ifelse(treatment …
Run Code Online (Sandbox Code Playgroud)

r legend ggplot2

5
推荐指数
1
解决办法
7444
查看次数

标签 统计

r ×2

dataframe ×1

dplyr ×1

ggplot2 ×1

legend ×1

max ×1