R中两个数据帧之间的相关性

R中两个数据帧之间的相关性,r,dataframe,correlation,R,Dataframe,Correlation,我有一个数据框,其中包含2000年10月至2001年12月期间(15个月)的销售值。此外,我还有上述同一时间段的利润值,我想在R中查找这15个月内这两个数据帧之间的月度相关性。我的数据框sales是: Month sales Oct. 2000 24.1 Nov. 2000 23.3 Dec. 2000 43.9 Jan. 2001 53.8 Feb. 2001

我有一个数据框,其中包含2000年10月至2001年12月期间(15个月)的销售值。此外,我还有上述同一时间段的利润值,我想在
R
中查找这15个月内这两个数据帧之间的月度相关性。我的数据框
sales
是:

 Month       sales
Oct. 2000   24.1                                        
Nov. 2000   23.3    
Dec. 2000   43.9    
Jan. 2001   53.8    
Feb. 2001   74.9    
Mar. 2001   25  
Apr. 2001   48.5    
May. 2001   18  
Jun. 2001   68.1    
Jul. 2001   78  
Aug. 2001   48.8    
Sep. 2001   48.9    
Oct. 2001   34.3    
Nov. 2001   54.1    
Dec. 2001   29.3
 period     profit
Oct 2000    14.1                                        
Nov 2000    3.3 
Dec 2000    13.9    
Jan 2001    23.8    
Feb 2001    44.9    
Mar 2001    15  
Apr 2001    58.5    
May 2001    18  
Jun 2001    58.1    
Jul 2001    38  
Aug 2001    28.8    
Sep 2001    18.9    
Oct 2001    24.3    
Nov 2001    24.1    
Dec 2001    19.3
我的第二个数据框
利润
是:

 Month       sales
Oct. 2000   24.1                                        
Nov. 2000   23.3    
Dec. 2000   43.9    
Jan. 2001   53.8    
Feb. 2001   74.9    
Mar. 2001   25  
Apr. 2001   48.5    
May. 2001   18  
Jun. 2001   68.1    
Jul. 2001   78  
Aug. 2001   48.8    
Sep. 2001   48.9    
Oct. 2001   34.3    
Nov. 2001   54.1    
Dec. 2001   29.3
 period     profit
Oct 2000    14.1                                        
Nov 2000    3.3 
Dec 2000    13.9    
Jan 2001    23.8    
Feb 2001    44.9    
Mar 2001    15  
Apr 2001    58.5    
May 2001    18  
Jun 2001    58.1    
Jul 2001    38  
Aug 2001    28.8    
Sep 2001    18.9    
Oct 2001    24.3    
Nov 2001    24.1    
Dec 2001    19.3
现在我知道,在最初的两个月内,我无法获得相关性,因为没有足够的值,但从2000年12月起,我想通过考虑前几个月的值来计算相关性。因此,对于<代码> DEC.200 < /代码>,我将考虑<代码> OC.O.S.<代码>,<代码> NOV.2000 和<代码> DEC.2000 < /代码>,这将给我3个销售值和3个利润值。同样地,对于<代码> 2001版< /代码>,我将考虑<代码> 2000×2000 <代码>、<代码>第11版> <代码> >代码2000 > <代码>和<代码> 2001版< /代码>,从而具有4的销售值和4的利润值。因此,每个月我都会考虑上个月的值来计算相关性< /强>,我的输出应该是这样的:

Month        Correlation
Oct. 2000    NA or Empty
Nov. 2000    NA or Empty
Dec. 2000       x
Jan. 2001       y
    .           .
    .           .
Dec. 2001       a
我知道在
R
中有一个函数
cor(销售、利润)
,但是我如何才能找到我的场景的相关性呢?

制作一些示例数据:

> sales = c(1,4,3,2,3,4,5,6,7,6,7,5)
> profit = c(4,3,2,3,4,5,6,7,7,7,6,5)
> data = data.frame(sales=sales,profit=profit)
> head(data)
  sales profit
1     1      4
2     4      3
3     3      2
4     2      3
5     3      4
6     4      5
这是牛肉:

> data$runcor = c(NA,NA, 
    sapply(3:nrow(data), 
       function(i){
          cor(data$sales[1:i],data$profit[1:i])
        }))
> data
   sales profit      runcor
1      1      4          NA
2      4      3          NA
3      3      2 -0.65465367
4      2      3 -0.63245553
5      3      4 -0.41931393
6      4      5  0.08155909
7      5      6  0.47368421
8      6      7  0.69388867
9      7      7  0.78317543
10     6      7  0.81256816
11     7      6  0.80386072
12     5      5  0.80155885
现在,
data$runcor[3]
是前3个销售和利润数字的相关性


注:我称之为runcor,因为它是一个“运行相关性”,就像“运行总和”,它是迄今为止所有元素的总和。这是迄今为止所有对的相关性。

另一种可能性是:(如果
dat1
dat2
是初始数据集)

更新
dat1$Month所以基本上你想循环
cor(销售[1:i],利润[1:i])
来增加
i
?@Spacedman会通过考虑前几个月的值来给我每年每个月的相关性吗?很抱歉问了一个不小的问题,但我是新手,因此没有太多的知识。@user2966197请用清晰的统计术语解释您的问题。你可能想计算互相关系数(见
?ccf
)@Roland我想计算销售和利润之间的相关性,如2000年10月
11月
2001年12月
正常运行
2001年12月
。对于前两个月(
2000年10月
和'2000年11月
),我无法得到相关性,因为销售和利润的每一方只有1或2个值。但是对于2000年12月以后的
Dec`我可以得到相关性,因为我将考虑上个月的值,因此对于2000年12月的
,每个月给出3个值。所以每个月我都会考虑过去几个月的价值。抱歉,我错误地显示了错误格式的数据格式。在第一个框架中,我的月份是在类似于<代码> > 2000版> /代码>格式,第二个月在“OCT 2000”(没有<代码> > <代码>月后)。我实现了您的方法,但它通过在第一个数据集中提供225个条目而不是15个条目,多次复制/加入每个条目。月份列称为
month
,但在第二个数据框中称为
period
。我再次为我原来的帖子中的错误道歉。我现在已经修改了帖子。