我需要一个数据框,其中列出了修补程序和更改变量之间的相关性,除以子组。 下面列出了我提出的最接近的解决方案,使用数据集mtcars作为示例(相关性不必有意义)。
library(datasets)
data(mtcars)
df <- load(mtcars)
as.factor(mtcars$am)
as.factor(mtcars$gear)
as.factor(mtcars$carb)
library(plyr)
cors <- function(var, group) {
corrl <- ddply(df, .(group), summarise, "corr" = cor(var, mpg, method = "spearman"))
}
dafr.var <- as.vector(c("cyl", "disp", "hp", "drat"))
args<- merge(as.character(c("am", "gear", "carb")), dafr.var)
args[,1:2]<- lapply(args[,1:2], as.character)
colnames(args) <- c("grouping", "variable")
cortable <- NULL
for (i in 1:nrow(args)){
cortable<- rbind(cortable, cors(var = df[args[i,2]], group = df[args[i,1]]))
}
cortable
&#34; Cortable&#34;将是最终的数据框,它列出了子组在中间步骤中列出的相关性 - 数据框&#34; args&#34;。
我的问题清楚了吗?有谁知道为什么这不起作用,或者我可以在我的代码中改变什么? 任何帮助深表感谢。
亲切的问候。
答案 0 :(得分:1)
这样的事情能帮助你找到你想要的东西吗?
df <- mtcars
df$make <- rownames(df)
df$make <- sapply(df$make, function(x) strsplit(x, " ")[[1]][1])
cors <- function(var, group) {
require(plyr)
corrl <- ddply(df, group, function(x) cor(x[,var], x[,"mpg"], method = "spearman"))
corrl$var <- var
corrl$group <- group
colnames(corrl) <- c("value", "corr", "var", "group")
return(corrl)
}
dafr.var <- as.vector(c("cyl", "disp", "hp", "drat"))
args <- merge(as.character(c("am", "gear", "carb", "make")), dafr.var)
args[,1:2] <- lapply(args[,1:2], as.character)
colnames(args) <- c("grouping", "variable")
cortable <- data.frame(value = numeric(), corr = numeric(), var = character(), group = character(), stringsAsFactors = FALSE)
for (i in 1:nrow(args)){
cortable <- rbind(cortable, cors(var = args[i,2], group = args[i,1]))
}
cortable <- cortable[,c("var","group","value","corr")]
cortable