首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据按时间顺序按条件排列(每个变量),并根据条件在数据帧中循环(每个变量)

数据按时间顺序按条件排列(每个变量),并根据条件在数据帧中循环(每个变量)
EN

Stack Overflow用户
提问于 2022-04-11 19:26:55
回答 1查看 27关注 0票数 0

我想按时间顺序将降雨时间序列数据组织到每个雨计(按代码列)中。雨量计在同一列中,与示例中的行相同,还有包含月份、年份和降雨信息的列。

在组织数据后,我需要执行统计测试,循环可以使它更容易,因为有大量的雨量计。是否有一种通过rain_gauge列中的代码循环指定每个雨量计作为测试中要重复的变量的方法?

代码语言:javascript
复制
rain_gauge = c(rep(1442032, 40), rep(1442035, 30), rep(1442036, 30),rep(1442039, 45),rep(1442049, 40),rep(1442032, 40),rep(1442045, 35))
year = runif(260, 1978,2020)
month = runif(260,1,12)
rainfall = runif(260, 50,202)

df = data.frame(rain_gauge, year, month, rainfall)#data frame to be organized in chronological order by "code" category
head(df)

#Examples of tests to apply to the series of each rain gauge in the rain_gauge column.
library(modifiedmk)
mmkh(as.vector(subset(df,rain_gauge=="1442032"))$rainfall)

pvalue_mk = mmkh(as.vector(subset(df,rain_gauge=="1442032"))$rainfall)[[2]]#Result to be save in a data frame results

library(tseries)
adf.test(subset(df,rain_gauge=="1442032")$rainfall)
pvalue_df = adf.test(subset(df,rain_gauge=="1442032")$rainfall)[[2]]#Result to be save in a data frame results

非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2022-04-11 21:08:10

考虑by (面向对象的tapply包装器),它允许您按因子对数据帧进行切片,并在子集上运行进程以返回简化的对象(即向量、矩阵)或任何输出的列表:

代码语言:javascript
复制
library(modifiedmk)
library(tseries)

get_pvalues <- function(sub) {
    mmkh_obj <- mmkh(sub$rainfall)
    adf_obj <- adf.test(sub$rainfall)    

    # NAMED VECTOR
    c(pvalue_mmkh = mmkh_obj[, "p.value"], pvalue_adf = adf_obj[, "p.value"])
}

# NAMED MATRIX
pvalues_matrix <- by(df, df$rain_gauge, get_pvalues)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71833291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档