【问题标题】:How can i loop through a consecutive window?我怎样才能循环通过一个连续的窗口?
【发布时间】:2016-10-17 19:32:24
【问题描述】:

我有一个这样的 df:

 > df
   symbol   x1      x2
1       A   3.6    5.2
2       A  10.0    4.8
3       A   5.2    0.2
4       A -10.2    0.4
5       A   5.4   -2.5
6       B   9.9    6.5
7       B  15.8   -1.8
8       B   4.5   -5.9
9       C  -2.0    0.5
10      C -10.0    2.6
11      C   7.7    8.9
12      C  10.5   18.5

我想按符号计算 x1 和 x2 列之间的 r 平方,所以我想得到一个像这样的新 df

  symbol r squared
1 A      0.27
2 B      0.30
3 C      0.68

我使用 ifelse 但它不起作用。

for (i in 1:12){
            results[i] <- ifelse(df$symbol == symbollist[i], summary(lm(df$x1~df$x2))$r.squared,0)
           }

如何在 R 中解决这个问题?

【问题讨论】:

    标签: r loops for-loop regression


    【解决方案1】:

    您可以使用by为每个符号执行lm

    by(df, df$symbol, function(x) summary(lm(x1~x2, x))$r.squared)
    
    df$symbol: A
    [1] 0.07445258
    ----------------------------------------------------------------------------------------------------------- 
    df$symbol: B
    [1] 0.09014209
    ----------------------------------------------------------------------------------------------------------- 
    df$symbol: C
    [1] 0.687236
    

    【讨论】:

      【解决方案2】:

      您可以为此使用dplyr 包。试试:

      library(dplyr)
      
      result <- df %>%
                    group_by(symbol) %>%
                        summarize(cor(x1, x2))
      

      【讨论】:

        猜你喜欢
        • 2012-02-27
        • 1970-01-01
        • 1970-01-01
        • 2021-10-25
        • 2020-03-11
        • 2020-08-14
        • 1970-01-01
        • 2013-08-18
        • 2017-09-18
        相关资源
        最近更新 更多