Ale*_*lex 4 aggregate r correlation
我有一个数据框由行绑定许多数据帧,每个数据帧用唯一键标识.我希望计算大数据帧的每个子集(使用唯一密钥)中的列的相关系数.例如,使用mtcars数据我可能要计算列之间的相关性hp,并wt在列中的每个独特的价值cyl.我可以循环完成
data("mtcars")
for(i in c(4,6,8)){
temp = subset(mtcars,mtcars$cyl==i)
cor(temp$hp,temp$wt)
}
Run Code Online (Sandbox Code Playgroud)
我认为聚合会更好,但这段代码不起作用:
data("mtcars")
aggregate(mtcars,by=mycars$cyl,cor)
Run Code Online (Sandbox Code Playgroud)
你可以用
data("mtcars")
library(plyr)
ddply(mtcars,"cyl",function(x) cor(x$hp,x$wt))
Run Code Online (Sandbox Code Playgroud)
这个分割数据中mtcars通过cyl,适用于每个子集x的功能cor(x$hp,x$wt),然后聚集为每个在data.frame子集的结果.
我强烈推荐这个plyr包.这是我在R中使用最多的包之一.
编辑:根据请求,这里有一个dplyr版本.我不得不说我不是一个大dplyr用户,但代码应该没问题.
library(dplyr)
mtcars %>% group_by(cyl) %>% summarise(V1=cor(hp,wt))
Run Code Online (Sandbox Code Playgroud)
在baseR中,它的工作split和lapply或sapply
lapply(split(mtcars, mtcars$cyl), function(X) cor(X$hp, X$wt))
## $`4`
## [1] 0.1598761
##
## $`6`
## [1] -0.3062284
##
## $`8`
## [1] 0.01761795
##
sapply(split(mtcars, mtcars$cyl), function(X) cor(X$hp, X$wt))
## 4 6 8
## 0.15987614 -0.30622844 0.01761795
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7354 次 |
| 最近记录: |