我在使用map()
r中的函数之一来计算数据帧中变量之间的相关性时遇到麻烦。问题是“使用地图功能之一来计算甲型肝炎与其他六种疾病中的每一种之间的皮尔逊相关性,并返回双重向量作为输出。”
数据显示每年每种疾病的年发病率。
我可以通过使用该cor()
函数来计算甲型肝炎与其他疾病之间的相关性,但是是否可以使用其中一个map()
函数来计算相关性?
cor(US_incidence$`Hepatitis A`, US_incidence$Measles, method = "pearson", use = "complete.obs")
cor(US_incidence$`Hepatitis A`, US_incidence$Mumps, method = "pearson", use = "complete.obs")
cor(US_incidence$`Hepatitis A`, US_incidence$Pertussis, method = "pearson", use = "complete.obs")
cor(US_incidence$`Hepatitis A`, US_incidence$Polio, method = "pearson", use = "complete.obs")
cor(US_incidence$`Hepatitis A`, US_incidence$Rubella, method = "pearson", use = "complete.obs")
cor(US_incidence$`Hepatitis A`, US_incidence$Smallpox, method = "pearson", use = "na.or.complete")
您可以map
直接跨越数据框的一个子集,因为数据框是向量列表,并且map可以遍历列表:
map(your_data_frame[,-c(1,2)], #every column except year and Hep A
~ cor(US_incidence$`Hepatitis A`, ., method = "Pearson", use = "complete.obs")
请注意,如果您想像上面一样更改'use'参数,则需要为此目的创建一个字符串列表map2
。
您也可以考虑dplyr::summarise()
与dplyr::across()
require(dplyr)
your_data_frame %>%
select(-year) %>% #don't need year column
ungroup() %>% # make sure d.f isn't grouped
summarise(across(everything(), function(x){
cor(`Hepatitis A`, x, method = "Pearson", use = "complete.obs")
})) -> correlations
上面将为您提供一Hepatitis A
列显示其自身相关性的列,但是您可以根据需要将其删除。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句