Адресные столбцы в датафрейме по номерам - PullRequest
1 голос
/ 15 марта 2020

имеют фрейм данных с 3 столбцами (предикторы y & 2). может обращаться к столбцам, например, с помощью height$df1 или df1[,2]. Тот же результат. Оба являются векторами (is.vector). В некоторых случаях в сочетании с формулами, такими как confint, вывод отличается.

этот код дает правильные результаты:

confint(lm(df1[,1] ~ height, data=df1), "height")

этот не работает, он заканчивается на NA значения:

confint(lm(earning ~ df1[, 2], data=df1), "height")

Хотелось бы обратиться к кадру данных с номерами столбцов, например df1[, 2]. Какой правильный подход? Спасибо за любую помощь.

Ответы [ 2 ]

1 голос
/ 16 марта 2020

Мы можем использовать reformulate для создания формулы:

confint(lm(reformulate(names(df1)[2], "earning"), df1), 'height')

Используя mtcars в качестве примера:

confint(lm(reformulate(names(mtcars)[6], "mpg"), mtcars), 'wt')

#       2.5 %    97.5 %
#wt -6.486308 -4.202635
0 голосов
/ 15 марта 2020

Один из вариантов - создать формулу с paste, и она должна работать

confint(lm(paste0('earning ~ ', names(df1)[2]), data = df1), "height")

Используя небольшой воспроизводимый пример

data(mtcars)
fit <- lm(mpg ~ mtcars[,6], data = mtcars)
confint(fit, 'wt')
#   2.5 % 97.5 %
#wt    NA     NA
fit <- lm(paste0('mpg ~', names(mtcars)[6]), data = mtcars)
confint(fit, 'wt')
#       2.5 %    97.5 %
#wt -6.486308 -4.202635
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...