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

时间:2019-11-19 12:45:33

标签: r dplyr linear-regression

我有一个数据框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中将它们全部加起来,因为我必须对此进行60种不同的分析df。

1 个答案:

答案 0 :(得分: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>

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