循环两个变量?

时间:2017-07-03 11:08:45

标签: r loops finance

早上好!

我有一个非常大的(面板)数据集,其中包含30年期间289家公司的每日股票回报数据。此外,我还有关于市场投资组合相应回报的数据。

现在,我的目标是为每只股票获得年度 beta测量。因此,长度为30的289个不同的“β系列”。

我对R很新,但我认为存档的最佳方式是循环公司以及年度指标。

  for (i in 1:length(unique(company), j in 1:length(unique(year))){
  data_ij <- data[which(data$company==i,data$year==j),]
  beta_ij <- lm(data_ij$RETURN ~ data_ij$MARKET)
}

然而,这似乎根本不起作用。有人可以给我一些指导吗? :)

/亚历

3 个答案:

答案 0 :(得分:1)

 for (i in 1:length(unique(company)){
   for( j in 1:length(unique(year))){
  data_ij <- data[which(data$company==i,data$year==j),]
  beta_ij <- lm(data_ij$RETURN ~ data_ij$MARKET)
   }
 }

答案 1 :(得分:0)

为什么不嵌套循环,

<VirtualHost 0.0.0.0:443>

    DocumentRoot /var/www/empresa
    ServerName empresa

    # enable ssl
    SSLEngine on
    SSLOptions +StdEnvVars
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    SSLCertificateFile /var/ssl/ca.empresa.crt
    SSLCertificateKeyFile /var/ssl/ca.empresa.key

    # this location requires client cert 
    <Location /webservice>
        SSLRequireSSL
        SSLRequire %{SSL_CLIENT_S_DN_O} eq "Empresa LDA." 
        SSLVerifyClient require
        SSLVerifyDepth  1
    </Location>
</VirtualHost>

答案 2 :(得分:0)

beta_series <- lapply(levels(data$company), 
                 function(x) lapply(unique(data$year), 
                               function(y) lm(RETURN ~ MARKET,
                               data = subset(data, company == x & year == y))))

您可以使用嵌套lapply()来首先循环覆盖company变量的级别(如果您的级别高于要分析的公司,则可以使用unique(data$company))。在此期间,您可以循环查看唯一年份,并在当前迭代定义的lm()上调用subset

相关问题