【发布时间】:2016-04-23 05:49:12
【问题描述】:
使用dfdata.frame
set.seed(123)
date <- as.Date(seq(as.Date("2003-01-01"), as.Date("2008-05-31"), by = 1), format="%Y-%m-%d")
flow <- runif(1978, 48530, 1250365)
df <- data.frame(date, flow)
和EcoHydRology 包,我使用BaseflowSeparation 函数将baseflow bf 与flow 分开。
library(EcoHydRology)
df$bf <- BaseflowSeparation(df$flow, filter_parameter = 0.925, passes = 3)
该函数创建两个新列bf.bt 和bf.qft
我想使用geom_line 在一张图上绘制三个参数flow、bf.bt 和bf.qft,所以我尝试使用tidyr 将data.frame 从宽格式转换为长格式
library(tidyr)
df <- tidyr::gather(df, "parameter", "value", 2:4)
我收到了这个错误
Error: Position must be between 0 and n
我检查了df 发现BaseflowSeparation 函数在df 内的两列中创建了新的data.frame bf
> str(df)
'data.frame': 1978 obs. of 3 variables:
$ date: Date, format: "2003-01-01" "2003-01-02" "2003-01-03" ...
$ flow: num 394151 995943 540053 1109771 1178816 ...
$ bf :'data.frame': 1978 obs. of 2 variables:
..$ bt : num 168374 171233 172381 150429 120018 ...
..$ qft: num 178506 824710 367671 959342 1058798 ...
任何建议如何将BaseflowSeparation 函数的输出作为两列而不是新的data.frame?
【问题讨论】:
-
使用 df
-
@chinsoon12 非常感谢。你能把它写成答案吗?
-
@chinsoon12 如果我有很多站点并且我正在使用 dpyr 根据站点进行分组。任何建议如何在 dplyr 中使用此功能?再次感谢
-
每个站点都有df吗?或者df中是否有一个名为site的列?
-
在df中有一个叫做site的列。