从数据框中选择列以进行线性回归r

问题描述 投票:1回答:1

我有一个数据框Data_Group_7_8,并希望基于因子分析进行线性回归。因素分析将col 1:4中的变量与MR1成对,col 16:20中的变量与MR2成对。我想将col 1:4设置为自变量,将16:20设置为因变量,并尝试以下代码:

mdl <- lm(select(1:4)  ~ select(16:20), data=Data_Group_7_8) 
summary(mdl)

不幸的是,这不起作用。但是以下内容可以:

df2 <- data.frame(x=Data_Group_7_8 %>% select(1:4),y=Data_Group_7_8 %>% select(16:20))

lrm <- lm(x.Themenwelt_1+ x.Themenwelt_2+ x.Themenwelt_3+ x.Product_demonstration ~ y.Inspired_by_1+ y.Inspired_by_2+ y.Inspired_by_3+ y.Inspired_by_4+ y.Inspired_by_5, data=df2)

summary(lrm)

是否有一种方法可以直接从原始Data_Group_7_8中选择变量(Themenwelt_1等)(就像我在代码1中所尝试的那样),而不是从新df中将它们全部加起来,因为我必须对此df做60种不同的分析。

r dplyr linear-regression
1个回答
0
投票

R允许您使用as.formula(str)从字符串构建公式。每一方都必须具有所考虑术语的总和,并且LHS和RHS必须与波浪号一起使用。您可以使用names()获得各列的名称,然后只需将它们粘贴在一起即可,首先在等式的每一侧,用collapse = '+'将字符向量折叠为单个字符串,然后将分开的两边组合在一起通过波浪号。这是内置mtcars数据集的示例:

regFormula <- function(dat,range1,range2){
  dat %>%
    select(range1) %>%
    names() %>%
    paste(collapse = ' + ') %>% 
    paste(dat %>% 
            select(range2) %>%
            names() %>%
            paste(collapse = ' + '),
          sep = ' ~ ') %>% 
    as.formula() 
}

regFormula(mtcars,1:3,4:5)
# mpg + cyl + disp ~ hp + drat
# <environment: 0x000000000cf55c90>

您可以直接将其用作线性模型中的公式。

© www.soinside.com 2019 - 2024. All rights reserved.