我有一个具有x列数的数据集,其中包含测试结果组,例如test1_1,test1_2 ... test1_x,test2_1,test2_2,test2_x,testx_x ...等。每组测试都有不同数量的测试结果与之相关联,因此每个测试(test1_1至test1_30,test2_1至test2_19等)的实际数字并不相同。最后一栏是我的目标变量。我正在寻找建立哪些测试与目标变量相关的方法,但是我也想为每组测试创建数据集。我还将针对目标变量绘制每个测试的相关图。目前,我已经使用dplyr软件包完成了以下操作:
# Filter dataset into corresponding test groups and target variable and create a
# new dataframe of each individual test group
test1 <- dataset %>% select((starts_with("test1_")) | matches("Target"))
test2 <- dataset %>% select((starts_with("test2_")) | matches("Target"))
test2 <- dataset %>% select((starts_with("test3_")) | matches("Target"))
# establish correlation between each test groups and target variable
cor_test1 <- cor(test1)
cor_test2 <- cor(test2)
cor_test2 <- cor(test2)
# Create correlation plots of each test group and target variable
cplot_t1 <- corrplot(cor_test1)
cplot_t2 <- corrplot(cor_test2)
cplot_t3 <- corrplot(cor_test3)
这给了我我想要的结果,并且当前可以满足我的需要,但是要做起来似乎非常乏味。我怀疑我可能可以在for / while循环中的几行代码中实现所有这些功能,但是,我不确定从哪里开始。
使用lapply
这可以像这样实现:
library(dplyr)
library(corrplot)
set.seed(42)
dataset <- data.frame(
test1_1 = runif(20),
test1_2 = runif(20),
test2_1 = runif(20),
test2_2 = runif(20),
Target = runif(20)
)
test_cols <- gsub("_\\d+$", "", names(dataset))
test_cols <- test_cols[grepl("^test", test_cols)]
test_cols <- unique(test_cols)
test_cols <- setNames(test_cols, test_cols)
test_fun <- function(x, test) {
x <- x %>%
select((starts_with(test)) | matches("Target"))
cor(x)
}
cor_test <- lapply(test_cols, test_fun, x = dataset)
cplot <- lapply(cor_test, corrplot)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句