【问题标题】:cross-correlation for list of data frames数据框列表的互相关
【发布时间】:2016-12-20 05:54:38
【问题描述】:

我有三个数据框TushkaARQEARQW

我像这样对每个数据帧分别使用互相关代码

# cross correlations with US column

#Tushka

head(Tushka)

#  US    PW1    PW2    PW3    PW4

#1 173.62 153.01 144.65 152.53 137.05

#2 173.57 152.97 144.64 152.52 137.10

#3 173.52 152.95 144.64 152.52 137.11

lag = 200

t3 = data.frame(lag = c(-lag:lag))

vars = names(Tushka[, -1])

for (j in vars) {

 t4 = ccf(Tushka[, 1], Tushka[, j], lag = lag, na.action = na.pass)

 t3[, j] = data.frame(t4$acf)[, 1]

}

但是,如果我创建三个数据框的列表,我如何使用 for-loop 或任何其他函数对数据框列表使用互相关

【问题讨论】:

    标签: r for-loop


    【解决方案1】:

    这是一些可重复的样本数据:

    n <- 100
    data_list <- list(
      d1 = data.frame(x = runif(n)),
      d2 = data.frame(x = runif(n)),
      d3 = data.frame(x = runif(n))
    )
    

    诀窍是使用expand.grid 来获取数据帧对。

    pairs <- expand.grid(first = names(data_list), second = names(data_list))
    

    现在您可以遍历pairs 的行,为该行中命名的每对数据帧运行互相关。

    lapply(
      seq_len(nrow(pairs)),
      function(i)
      {
        first_data <- data_list[[pairs[i, "first"]]]
        second_data <- data_list[[pairs[i, "second"]]]
        ccf(first_data$x, second_data$x, plot = FALSE)
      }
    )
    

    【讨论】:

    • 我不明白里奇你做了什么
    • 如果你写了一个更好的问题,你会得到一个更好的答案。具体有什么不明白的?你试过什么?
    • @RichieCotton 如果您确实绘制了此图并想标记多面板图,您将如何执行此操作?这正是我想要做的。
    猜你喜欢
    • 2012-12-06
    • 2017-05-18
    • 2019-10-15
    • 2022-09-22
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 2013-12-19
    相关资源
    最近更新 更多