Forum Discussion
Los scripts de R no funcionan
Hola.
Este es un script R que obtiene datos de un código abierto e intenta aplicar ajustes estacionales a la serie temporal con ARIMA usando x12 en R
library(dplyr)
require(tidyr)
require(x12)
get_data <- function() {
url <- "https://px.hagstofa.is:443/pxis/sq/61359243-62a0-4f2b-99b6-aa3c31267fab"
markadsverd_nsa <- read.csv(url,
sep = "\t")
colnames(markadsverd_nsa) <- c("Period", "Visitala", "Value")
markadsverd_nsa$Value[markadsverd_nsa$Value == ".."] <- NA
markadsverd_nsa$Value <- as.numeric(as.character(markadsverd_nsa$Value))
# Rename the "Visitala"
markadsverd_nsa$Visitala <- as.character(markadsverd_nsa$Visitala)
markadsverd_nsa$Visitala[markadsverd_nsa$Visitala == "Höfuðborgarsvæði - Fjölbýli"] <- "Hbsv_Fjolbyli"
markadsverd_nsa$Visitala[markadsverd_nsa$Visitala == "Höfuðborgarsvæði - Einbýli"] <- "Hbsv_Einbyli"
markadsverd_nsa$Visitala[markadsverd_nsa$Visitala == "Utan höfuðborgarsvæðis - Alls"] <- "Landsb_Alls"
markadsverd_nsa$Visitala[markadsverd_nsa$Visitala == "Landið - Alls"] <- "Landid_Alls"
# Convert to wide format
markadsverd_nsa <- spread(data = markadsverd_nsa, value = "Value", Visitala)
return(markadsverd_nsa)
}
### Performing seasonal adjustment ##
# We begin by downloading the data
markadsverd_nsa <- get_data()
# The x12 function only wants to work with one time series at a time.
# Let’s focus on foreign passengers. The serie needs to be defined as a ts time series object.
mverd_fjolbyli <- ts(markadsverd_nsa$Hbsv_Fjolbyli, frequency = 12, start = c(2000,3))
mverd_einbyli <- ts(markadsverd_nsa$Hbsv_Einbyli, frequency = 12, start = c(2000,3))
mverd_landsbyggd <- ts(markadsverd_nsa$Landsb_Alls, frequency = 12, start = c(2000,3))
mverd_landid <- ts(markadsverd_nsa$Landid_Alls, frequency = 12, start = c(2000,3))
# The seasonal adjustment is performed with the function x12 and returns an S4 object of the class x12Output.
mverd_fjolbyli_sa <- x12(mverd_fjolbyli)
mverd_fjolbyli_sa <-mverd_fjolbyli_sa@d11
mverd_einbyli_sa <- x12(mverd_einbyli)
mverd_einbyli_sa <- mverd_einbyli_sa@d11
mverd_landsbyggd_sa <- x12(mverd_landsbyggd)
mverd_landsbyggd_sa <- mverd_landsbyggd_sa@d11
mverd_landid_sa <- x12(mverd_landid)
mverd_landid_sa <- mverd_landid_sa@d11
markadsverd_sa <- cbind.data.frame(mverd_einbyli_sa, mverd_fjolbyli_sa, mverd_landid_sa, mverd_landsbyggd_sa)
markadsverd <-cbind(markadsverd_nsa,markadsverd_sa)
# For a list of more slots see the documentation on the x12Output class in the manual for the x12 package (see here).
# Another interesting thing to observe is the seasonal factors. Those can be plotted directly with the convenience function plotSeasFac. The plot for our data looks like this.
#plotSeasFac(mverd_fjolbyli_sa)
Estoy ejecutando este script en Power BI Desktop. Simplemente no funciona en mi computadora, pero funciona en otra con una versión anterior de R instalada.
Este es el error que recibo. Bueno, según los especialistas de R esto es solo una advertencia y no debe detener el cálculo, pero lo hace en Power BI Desktop.
Lo que he intentado hasta ahora es
- Desinstalación completa de R, Rstudio y Rtools y vuelva a instalar con todas las bibliotecas
- Se ha cambiado el almacenamiento de la biblioteca Temp para R en PBI Desktop
- Cambiar las rutas de la biblioteca según varios orígenes sobre este problema con .libPath()
¿Cómo puedo ejecutar R-scripts ignorando con éxito las advertencias?
4 Replies
- Syndicate_AdminAdministrator
@Yggdrasill Tal vez intente:
options(warn=-1)- Syndicate_AdminAdministrator
- Syndicate_AdminAdministrator
Hay @Yggdrasill ,
El problema podría ocurrir en la url:
url <- "https://px.hagstofa.is:443/pxis/sq/61359243-62a0-4f2b-99b6-aa3c31267fab"Cuando leo este archivo en R directamente, devuelve el error:
Si descargo este archivo y lo almaceno en el local para reemplazar la ruta, funciona:
Por lo tanto, puede intentar almacenar el archivo url en local y verificarlo.
Además, aquí hay un subproceso similar que proporciona otra solución alternativa que también puede consultar:
La conexión remota no puede obtener ningún dato de Internet
Saludos
Equipo de apoyo a la comunidad _ Yingjie Li
Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.- Syndicate_AdminAdministrator
Hola y gracias por la respuesta. No creo que ese sea el problema aquí, ya que puedo leer la URL a través de Rstudio
Por ejemplo, puedo obtener datos con éxito con este comando:data <- read.csv('http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data')Lo que debe probar en lugar de dejar que R obtenga los datos, deje que Power Query los obtenga en su lugar y luego intente ejemplificar el script R, así:
let //POWER QUERY FETCHES DATA AND TRANSFORMS PROPERLY Source = Csv.Document( Web.Contents("https://px.hagstofa.is:443/pxis/sq/61359243-62a0-4f2b-99b6-aa3c31267fab"), [Delimiter = " ", Columns = 3, Encoding = 1252, QuoteStyle = QuoteStyle.None] ), #"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars = true]), #"Changed Type" = Table.TransformColumnTypes( #"Promoted Headers", {{"Mánuður", type text}, {"Vísitala", type text}, {"Vísitala neysluverðs", type number}} ), #"Pivoted Column" = Table.Pivot( #"Changed Type", List.Distinct(#"Changed Type"[Vísitala]), "Vísitala", "Vísitala neysluverðs", List.Sum ), #"Renamed Columns" = Table.RenameColumns( #"Pivoted Column", { {"Höfuðborgarsvæði - Einbýli", "Hbsv_Einbyli"}, {"Höfuðborgarsvæði - Fjölbýli", "Hbsv_Fjolbyli"}, {"Landið - Alls", "Landid_Alls"}, {"Utan höfuðborgarsvæðis - Alls", "Landsb_Alls"} } ), //EXECUTE R SCRIPT USING TIDYR and X12 FUNCTIONS #"Execute R" = R.Execute( "library(dplyr) #(lf)require(tidyr) #(lf)require(x12) #(lf)#(lf)#(lf)## # Performing seasonal adjustment ###(lf) # We begin by downloading the data#(lf) // THIS COMMAND READS PQ DATA TO R ! markadsverd_nsa <- dataset#(lf)#(lf) # The x12 function only wants to work with one time series at a time. #(lf) # Let’s focus on foreign passengers. The serie needs to be defined as a ts time series object.# (lf)mverd_fjolbyli <- ts(markadsverd_nsa$Hbsv_Fjolbyli, frequency = 12, start = c(2000,3))#(lf)mverd_einbyli <- ts(markadsverd_nsa$Hbsv_Einbyli, frequency = 12, start = c(2000,3))#(lf)mverd_landsbyggd <- ts(markadsverd_nsa$Landsb_Alls, frequency = 12, start = c(2000,3))#(lf)mverd_landid <- ts(markadsverd_nsa$Landid_Alls, frequency = 12, start = c(2000,3))#(lf)# (lf)#(lf)# The seasonal adjustment is performed with the function x12 and returns an S4 object of the class x12Output.#(lf)#(lf) mverd_fjolbyli_sa <- x12(mverd_fjolbyli) #(lf) mverd_fjolbyli_sa <-mverd_fjolbyli_sa@d11#(lf)#(lf) mverd_einbyli_sa <- x12(mverd_einbyli) #(lf) mverd_einbyli_sa <- mverd_einbyli_sa@d11#(lf)#(lf) mverd_landsbyggd_sa <- x12(mverd_landsbyggd) #(lf) mverd_landsbyggd_sa <- mverd_landsbyggd_sa@d11#(lf)#(lf) mverd_landid_sa <- x12(mverd_landid) #(lf) mverd_landid_sa <- mverd_landid_sa@d11#(lf)#(lf) markadsverd_sa <- cbind.data.frame(mverd_einbyli_sa, mverd_fjolbyli_sa, mverd_landid_sa, mverd_landsbyggd_sa)#(lf) markadsverd <-cbind(markadsverd_nsa,markadsverd_sa)#(lf) # For a list of more slots see the documentation on the x12Output class in the manual for the x12 package (see here).#(lf)#(lf) # Another interesting thing to observe is the seasonal factors. Those can be plotted directly with the convenience function plotSeasFac. The plot for our data looks like this.#(lf)#(lf)#plotSeasFac(mverd_fjolbyli_sa)" ), markadsverd1 = Source{[Name = "markadsverd"]}[Value], #"Added Custom Column" = Table.AddColumn( markadsverd1, "Date", each Text.Combine({Text.Middle([Period], 5), ".", Text.Start([Period], 4)}), type text ), #"Changed Type2" = Table.TransformColumnTypes(#"Added Custom Column", {{"Date", type date}}), #"Reordered Columns" = Table.ReorderColumns( #"Changed Type2", { "Date", "Period", "Hbsv_Einbyli", "Hbsv_Fjolbyli", "Landid_Alls", "Landsb_Alls", "mverd_einbyli_sa", "mverd_fjolbyli_sa", "mverd_landid_sa", "mverd_landsbyggd_sa" } ) in #"Reordered Columns"Esto debería hacer exactamente lo mismo que el script que publiqué anteriormente, pero en su lugar uso PQ para obtener los datos y luego intentar ejemplificar R-script con.
El comando Rmarkadsverd_nsa <- datasetobtendrá los datos de PQ
¡Hago que esto funcione hasta que el script intente ejecutar los paquetes desde R! y no sé por qué 😞