我在R中有一个包含2个变量的数据框[例如身高,体重]我想计算一些其他协变量[如性别,种族]的相关性。
我想计算每组性别和种族的身高与体重的R ^ 2值。例如。男性和女性的身高与体重的R ^ 2高加索人,女性和女性高加索人,男性和女性亚洲人,女性和女性高加索人等
我发现“by”命令在这方面很有用。
cor <- by(data[,c(6,7)],list(data$sex,data$ethnicity),cor)
> cor
: Female
: African American
wt ht
wt 1.0000000 0.6879572
ht 0.6879572 1.0000000
------------------------------------------------------------------------------------------------------------------------------------------------
: Male
: African American
wt ht
wt 1.0000000 0.6868178
ht 0.6868178 1.0000000
------------------------------------------------------------------------------------------------------------------------------------------------
: Female
: Hispanic
wt ht
wt 1.0000000 0.6162962
ht 0.6162962 1.0000000
------------------------------------------------------------------------------------------------------------------------------------------------
: Male
: Hispanic
wt ht
wt 1.0000000 0.5854748
ht 0.5854748 1.0000000
我的问题是,我想将这些列表形式的结果转换为包含以下列的数据框:
R2_value 性别 种族
我的问题是如何从“cor”列表中提取性别和种族的价值(我的输出来自“by”命令)。
当我做“cor [[1]]”时,我只得到女性,非裔美国人的相关矩阵。
调用“姓名(cor)”并不能满足我的要求。
答案 0 :(得分:0)
这是解决此问题的第一次尝试。我不确定输出是否有效,因为您没有表达您最初的数据。请尝试代码并报告您的结果!
set.seed(123)
# Coerce your data.frame to a data.table
require("data.table")
DT <- data.table(data)
DT <- data.table(wt = rnorm(100, 80, 10),
ht = rnorm(100, 110, 10),
sex = factor(sample(c("MALE", "FEMALE"), 100, replace = T)),
ethnicity = factor(sample(c("African American", "Hispanic"), 100, replace = T))
)
str(DT)
DT[, cor(wt,ht), by="sex,ethnicity"]