【发布时间】:2021-08-09 06:29:15
【问题描述】:
您好,我有 2 段代码,它们都在做同样的事情,一个是使用 R 附带的数据集,另一个是我创建的 .csv 文件,除了更多列之外,代码没有任何变化.csv 文件具有不同的名称,但由于某种原因我得到了错误的输出
此代码的 csv 文件位于此处 https://github.com/juandavidlozano/Data_1/blob/main/high_northell.csv
这是第一个代码
library(plyr)
library(readr)
library(dplyr)
library(caret)
library(ggplot2)
library(repr)
dat <- economics
drops <- c("date")
dat <- dat[ , !(names(dat) %in% drops)]
cols = c('pce', 'pop', 'psavert', 'uempmed')
pre_proc_val <- preProcess(dat[,cols], method = c("center", "scale"))
dat[,cols] = predict(pre_proc_val, dat[,cols])
###### Linear Regression
number_days = 10
dat <- as.data.frame(dat)
new_cols <- c('Intercept', paste0(cols, '_predict'))
dat[new_cols] <- NA
inds <- nrow(dat) - number_days
dat[(number_days+1):nrow(dat), new_cols] <- do.call(rbind, lapply(seq(inds), function(x) {
lr = lm(unemploy ~ uempmed + psavert + pop + pce, data = dat[x:(x + number_days - 1), ])
t(lr$coefficients)
}))
dat 数据框如下所示
前 10 行有一些 NA,这是因为变量 number_days 将前 X 行留空,然后用最后 X 天数据的线性回归模型的系数填充它,依此类推.
这个数据框是正确的,所有的列都有值。
第二个代码就是这个
library(plyr)
library(readr)
library(dplyr)
library(caret)
library(ggplot2)
library(repr)
dat<-read.csv("high_northell.csv", header = TRUE, stringsAsFactors=FALSE)
drops <- c("date")
dat <- dat[ , !(names(dat) %in% drops)]
cols = c("state_covid_death","kantar_state_tv_daily","VIX", "interest_urgent_care","CPI","SPY",
"kantar_state_digital_daily", "Flu_indicator","covid_cases",
"Search.Cost","Display.Cost")
pre_proc_val <- preProcess(dat[,cols], method = c("center", "scale"))
dat[,cols] = predict(pre_proc_val, dat[,cols])
###### Linear Regression
number_days = 10
dat <- as.data.frame(dat)
new_cols <- c('Intercept', paste0(cols, '_predict'))
dat[new_cols] <- NA
inds <- nrow(dat) - number_days
dat[(number_days+1):nrow(dat), new_cols] <- do.call(rbind, lapply(seq(inds), function(x) {
lr = lm(Total.Visits~ state_covid_death + kantar_state_tv_daily + VIX+ interest_urgent_care+ CPI+ SPY +kantar_state_digital_daily+ Flu_indicator + covid_cases+ Search.Cost+ Display.Cost, data = dat[x:(x + number_days - 1), ])
t(lr$coefficients)
}))
如您所见,代码相同,但在这种情况下,dat 数据框出于某种原因,某些列填充了 NA,有些列填充了 NA,并且到处都有数据,这个数据框应该看起来像顶部的那个,除前 X 行之外的所有列都应填充。
这是第二个代码的图片数据数据框
对导致此问题的原因有任何帮助吗?
【问题讨论】: