R中两个数据帧之间的相关性
我有一个数据框,其中包含2000年10月至2001年12月期间(15个月)的销售值。此外,我还有上述同一时间段的利润值,我想在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
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
。我再次为我原来的帖子中的错误道歉。我现在已经修改了帖子。