快速转向&#t;整理的方法数据超过超图(又名超出地块)

时间:2018-03-30 18:06:50

标签: r ggplot2 dplyr tidyverse

我希望找到更好的方法来改变整洁的状态。像这样的数据框:

enter image description here

进入"超越情节"或"超越情节" (通常在水资源应用中拼写两种方式)如下所示,它只是沿着x轴对变量进行排序/排序。

这是我现在这么做的漫长道路:

(样本数据):

library(tidyverse)

timestep <- c("a", "b", "c", "a", "b", "c", "a", "b", "c")
var <- c("x", "x", "x", "y", "y", "y", "z", "z", "z")
taf <- c(18,1,5,23,12,67,7,30,2)
df <- data.frame(timestep, var, taf)

建立一个新的数据框架(我认为我需要它?):

df_a <- df %>% filter(var == "x") %>% arrange(desc(taf))
df_b <- df %>% filter(var == "y") %>% arrange(desc(taf)) 
df_c <- df %>% filter(var == "z") %>% arrange(desc(taf)) 

df_rank <- rbind(df_a, df_b, df_c)
ts_nums <- length(unique(timestep))

taf_var_rank <- rep(seq(ts_nums),ts_nums)
taf_var_rank_xaxis <- taf_var_rank/(ts_nums+1) #standard calc for xaxis
df_rank <- data.frame(df_rank, taf_var_rank, taf_var_rank_xaxis)

制作此df_rank

enter image description here

对于我这样的情节的最终目标:

ggplot(df_rank, aes(x = taf_var_rank_xaxis, y = taf, color = var)) + geom_line() + 
labs(x = "probability of exceedance")

enter image description here

我对R(和编程)很陌生,我认为我可以建立一个通用功能,或者如果我很幸运,现有的库/功能可以缩小这个过程我?非常感谢任何帮助,因为我有很多变量的长时间系列。

欢呼,戴夫

1 个答案:

答案 0 :(得分:1)

看看你做了什么,看起来你不需要制作那些独立的data.frames。您可以使用大多数dplyr函数来执行相同的操作:

df %>% arrange(var, desc(taf)) %>% 
  group_by(var) %>% 
  mutate(taf_var_rank = row_number(),
         taf_var_rank_xaxis = taf_var_rank/(n()+1)) %>% 
  ggplot(aes(x = taf_var_rank_xaxis, y = taf, color = var)) + 
    geom_line() + 
    labs(x = "probability of exceedance")