Получение NA независимо от используемого метода преобразования факторов - PullRequest
0 голосов
/ 14 мая 2019

Я вижу, что этот вопрос задавался много раз, и я сам перепробовал все методы для преобразования моих коэффициентов в числовые, включая:

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])

Любое предложение о том, что я могу пропустить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...