R Dplyr在相关处的解决方案
我试图通过(group_by)MktDate计算数据帧中所有列与另一列的相关性(安全返回) 我已经尝试了许多dplyr解决方案,但不能让相关示例正常工作,但在使用mean获得示例正常工作时没有问题 这项工作,以计算指定列的平均值R Dplyr在相关处的解决方案,r,dplyr,R,Dplyr,我试图通过(group_by)MktDate计算数据帧中所有列与另一列的相关性(安全返回) 我已经尝试了许多dplyr解决方案,但不能让相关示例正常工作,但在使用mean获得示例正常工作时没有问题 这项工作,以计算指定列的平均值 MyMeanTest <- MyDataTest %>% filter(MktDate >='2009-12-31') %>% group_by(MktDate) %>% summarize_at(c('RtnVol_EM','OCFROI
MyMeanTest <- MyDataTest %>%
filter(MktDate >='2009-12-31') %>%
group_by(MktDate) %>%
summarize_at(c('RtnVol_EM','OCFROI_EM'),mean,na.rm=TRUE)
一种可能的方法是重新调整数据的形状,以便在一列中包含始终需要的相关变量(FwdRet),在另一列中包含更改的变量。像这样:
MyDataTest_reshape <- MyDataTest %>%
gather(factor, value, -MktDate, -FwdRet)
MyDataTest_reshape
MktDate FwdRet factor value
1 2018-12-31 2 Fact1 10
2 2018-12-31 3 Fact1 30
3 2018-12-31 4 Fact1 20
4 2018-12-31 5 Fact1 15
5 2019-01-31 5 Fact1 12
6 2019-01-31 2 Fact1 25
7 2019-01-31 1 Fact1 26
8 2019-01-31 4 Fact1 28
9 2018-12-31 2 Fact2 100
10 2018-12-31 3 Fact2 500
11 2018-12-31 4 Fact2 300
12 2018-12-31 5 Fact2 400
13 2019-01-31 5 Fact2 150
14 2019-01-31 2 Fact2 400
15 2019-01-31 1 Fact2 430
16 2019-01-31 4 Fact2 420
一种可能的方法是重新调整数据的形状,以便在一列中包含始终需要的相关变量(FwdRet),在另一列中包含更改的变量。像这样:
MyDataTest_reshape <- MyDataTest %>%
gather(factor, value, -MktDate, -FwdRet)
MyDataTest_reshape
MktDate FwdRet factor value
1 2018-12-31 2 Fact1 10
2 2018-12-31 3 Fact1 30
3 2018-12-31 4 Fact1 20
4 2018-12-31 5 Fact1 15
5 2019-01-31 5 Fact1 12
6 2019-01-31 2 Fact1 25
7 2019-01-31 1 Fact1 26
8 2019-01-31 4 Fact1 28
9 2018-12-31 2 Fact2 100
10 2018-12-31 3 Fact2 500
11 2018-12-31 4 Fact2 300
12 2018-12-31 5 Fact2 400
13 2019-01-31 5 Fact2 150
14 2019-01-31 2 Fact2 400
15 2019-01-31 1 Fact2 430
16 2019-01-31 4 Fact2 420
这对我有用
库(tidyverse)
MyDataTest%
分组依据(MktDate)%>%
总结(c(“事实1”,“事实2”),列表(~cor(,FwdRet,use=“pairwise.complete.obs”,“spearman”))
#>#tibble:2 x 3
#>MktDate Fact1 Fact2
#>
#> 1 2018-12-31 0.2 0.4
#> 2 2019-01-31 -0.4 -0.8
这对我很有用
库(tidyverse)
MyDataTest%
分组依据(MktDate)%>%
总结(c(“事实1”,“事实2”),列表(~cor(,FwdRet,use=“pairwise.complete.obs”,“spearman”))
#>#tibble:2 x 3
#>MktDate Fact1 Fact2
#>
#> 1 2018-12-31 0.2 0.4
#> 2 2019-01-31 -0.4 -0.8
它怎么不起作用?你收到错误信息了吗?意外结果?我用收到的错误消息更新了原始问题。今天晚些时候,我会尽量抽出时间发布一个可复制的示例。我还在原始文章的底部添加了一个示例,带有逗号分隔的最终结果和示例输入数据。它怎么不起作用?你收到错误信息了吗?意外结果?我用收到的错误消息更新了原始问题。今天晚些时候,我会尽量抽出时间发布一个可复制的示例。我还在原始文章的底部添加了一个示例,带有逗号分隔的最终结果和示例输入数据。这是一个极好的解决方案,具有创造性。我会把它保存在我的代码中,以备将来参考。非常感谢这是一个很好的解决方案和创意。我会把它保存在我的代码中,以备将来参考。非常感谢谢谢,杰克,这对我来说也很好。看起来我的思路是对的,但是我的语法有点不对劲。非常感谢,杰克,这对我来说也很好。看起来我的思路是对的,但我的语法有点不对劲。
MktDate,Fact1,Fact2
12/31/18,.2,.4
1/31/19,.4,-.8
MyDataTest_reshape <- MyDataTest %>%
gather(factor, value, -MktDate, -FwdRet)
MyDataTest_reshape
MktDate FwdRet factor value
1 2018-12-31 2 Fact1 10
2 2018-12-31 3 Fact1 30
3 2018-12-31 4 Fact1 20
4 2018-12-31 5 Fact1 15
5 2019-01-31 5 Fact1 12
6 2019-01-31 2 Fact1 25
7 2019-01-31 1 Fact1 26
8 2019-01-31 4 Fact1 28
9 2018-12-31 2 Fact2 100
10 2018-12-31 3 Fact2 500
11 2018-12-31 4 Fact2 300
12 2018-12-31 5 Fact2 400
13 2019-01-31 5 Fact2 150
14 2019-01-31 2 Fact2 400
15 2019-01-31 1 Fact2 430
16 2019-01-31 4 Fact2 420
MyDataTest_reshape %>%
group_by(MktDate, factor) %>%
summarize(correlation = cor(FwdRet, value)) %>%
spread(factor, correlation)
# A tibble: 2 x 3
# Groups: MktDate [2]
MktDate Fact1 Fact2
<date> <dbl> <dbl>
1 2018-12-31 0.0756 0.529
2 2019-01-31 -0.627 -0.736
MyDataTest %>%
gather(factor, value, -MktDate, -FwdRet) %>%
group_by(MktDate, factor) %>%
summarize(correlation = cor(FwdRet, value)) %>%
spread(factor, correlation)