Я вижу, что этот вопрос задавался много раз, и я сам перепробовал все методы для преобразования моих коэффициентов в числовые, включая:
as.numeric(as.character(x))
lapply(x, function(y) as.numeric(levels(y))[y])
as.numeric.factor <- function(y) as.numeric(levels(y))[y]
lapply(x, as.numeric.factor)
Я не могу использовать функцию unlist
, потому что я хочу вывод в широком формате, а unlist
преобразует его в длинный.
Но все они выдают значения NA в качестве вывода.
Когда я специально проверяю x, он показывает соответствующие значения.
> class(x)
[1] "data.frame"
> class(x$Col2)
[1] "factor"
> class(x$Col1)
[1] "Date"
Пожалуйста, найдите воспроизводимый пример:
set.seed(354)
df <- data.frame(Product_Id = rep(1:100, each = 50),
Date = seq(from = as.Date("2014/1/1"), to = as.Date("2018/2/1") , by = "month"),
Sales = rnorm(100, mean = 50, sd= 20))
df <- df[-c(251:256, 301:312, 2551:2562, 2651:2662, 2751:2762), ]
library(zoo)
z <- read.zoo(df, index = "Date", split = "Product_Id", FUN = as.yearmon)
tt <- as.ts(z)
fcast <- matrix(NA, ncol = ncol(tt), nrow = 12)
library(forecast)
for(i in 1:ncol(tt)){
fc1 <- forecast(stlf(na.trim(tt[,i]),h=12))
fcast[,i] <-fc1$mean
}
forecasted <- format(round(rbind(tt, fcast),2),nsmall = 2)
dd <- data.frame(date = seq(as.Date('2014-01-01'), by = 'months', length = nrow(forecasted)),Prod_Id = forecasted)
dd_f <- lapply(dd, function(x) as.numeric(levels(x))[x])
Любое предложение о том, что я могу пропустить?