Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在数据帧子集上重叠而不进一步拆分_R_List_Dataframe_Lapply - Fatal编程技术网

R 在数据帧子集上重叠而不进一步拆分

R 在数据帧子集上重叠而不进一步拆分,r,list,dataframe,lapply,R,List,Dataframe,Lapply,我不知道如何做到这一点,而不涉及每一个单独的部分。我有一个初始的timeseries数据集,我将其拆分为一个包含12个数据帧的列表,代表每个月。在每个月内,我希望在每个独特的站点上运行计算和ggplot,而不必调用每个单独的站点。目前的结构如下: $ April :'data.frame': 9360 obs. of 15 variables: ..$ site_id : int [1:9360] 1003 1003 1003 1003 1003 1003 1003 10

我不知道如何做到这一点,而不涉及每一个单独的部分。我有一个初始的timeseries数据集,我将其拆分为一个包含12个数据帧的列表,代表每个月。在每个月内,我希望在每个独特的站点上运行计算和ggplot,而不必调用每个单独的站点。目前的结构如下:

 $ April    :'data.frame':  9360 obs. of  15 variables:
  ..$ site_id     : int [1:9360] 1003 1003 1003 1003 1003 1003 1003 1003 1003 1003 ...
  ..$ UTC_date.1  : Date[1:9360], format: "2005-04-01" "2005-04-02" "2005-04-03" "2005-04-04" ...
  ..$ POSIXct     : POSIXct[1:9360], format: "2005-04-01 06:00:00" "2005-04-02 06:00:00" "2005-04-03 06:00:00" "2005-04-04 06:00:00" ...
  ..$ swe_mm      : num [1:9360] 45.9 44.6 43.5 42.4 41.2 ...
  ..$ fsca        : num [1:9360] 1 1 1 1 0.997 ...
  ..$ snoht_m     : num [1:9360] 0.303 0.239 0.21 0.186 0.165 ...
  ..$ swe_mm.1    : num [1:9360] 45.9 44.6 43.5 42.4 41.2 ...
  ..$ fsca.1      : num [1:9360] 1 1 1 1 0.997 ...
  ..$ snoht_m.1   : num [1:9360] 0.303 0.239 0.21 0.186 0.165 ...
  ..$ actSWE_mm   : num [1:9360] 279 282 282 282 282 284 292 295 295 295 ...
  ..$ actSD_cm    : num [1:9360] 79 79 NA 79 79 81 185 81 81 81 ...
  ..$ swe_Res_mm  : num [1:9360] 233 237 238 240 241 ...
  ..$ snoht_Res_m : num [1:9360] 0.487 0.551 NA 0.604 0.625 ...
  ..$ swe_Res1_mm : num [1:9360] 233 237 238 240 241 ...
  ..$ snoht_Res1_m: num [1:9360] 0.487 0.551 NA 0.604 0.625 ...
如果我将标准化rmse完全应用于每个数据帧,我可以使用Lappy计算标准化rmse而不会产生问题:

stdres.fun <- function(data,x,out) {data[out] <- data[[x]] / ((sum(data[[x]]^2, na.rm = TRUE)/NROW(data))^.5); data}
monthSplit <- lapply(monthSplit, stdres.fun, x = "swe_Res_mm", out="stdSWE_res")

stdres.fun我们可以修改函数并使用
tidyverse
方法

library(purrr)
library(dplyr)
monthSplit2 <- map(monthSplit, ~ 
             .x %>%
                group_by(sites) %>%
                mutate(stdSWE_res = swe_Res_mm/((sum(swe_Res_mm^2, 
                na.rm = TRUE)/n()) ^.5))
库(purrr)
图书馆(dplyr)
monthSplit2%
分组依据(站点)%>%
突变(stdSWE_res=swe_res_mm/)和(swe_res_mm^2,
na.rm=TRUE)/n())^.5)

这是一种情况,如果一个可重复的示例会起到很大作用,您能否共享数据的
dput()
dput(head())
的输出?我尝试过,但输出对于控制台窗口来说太长,因此它会被切断。还有别的方法吗?我查阅了有关mutate的文档,但还是不太明白。你能解释一下它在上面的实际作用吗?正如在上面使用mutate与直接计算stdSWE_res之间有什么区别一样?@user3427325除了这里的
NROW
n()
行数替换外,没有太大区别,这在分组与不分组时会有所不同。我不知道为什么,但我一直得到一个:错误:找不到对象“stdSWE\u res”。我知道该列尚未创建,但我假设该列会根据计算结果自行创建?@user3427325抱歉,这是我从您的逻辑复制代码的错误。在
=
的右侧,它既是
swe_Res_mm
。更新了代码