2017-12-24 11 views
1

Iは、グループによって異なる値を有するRにロードされたデータフレームを有する:lapplyを使ってRのリスト全体に関数を適用しますか?

Group Value 
A  50 
A  2 
A  55 
B  41 
B  60 
B  102 
C  24 
C  60 
C  2 
D  6 
D  9 
D  20 
E  1 
E  23 
E  19 

Iグループによってデータを分割する分割機能を使用しています:

mylist <- split(mydata, mydata$Group) 
mylist 

Iは、次いで、自動作成しています。 ARIMA出力を個別のグループ(別のデータフレームとして既にRにロードされているグループで)で実行すると、ARIMAの出力が返されます。

しかし、私がしたいのは、ARIMA関数を使ってデータセット内のすべてのグループのARIMAを自動的に計算することです。しかし、私はこれを行うためにlapplyを使用する方法が不明です。

私が試してみました:

Error in auto.arima(x) : No suitable ARIMA model found 

う:私がしたいように、私は、エラーメッセージを取得していますよう

allarima <- lapply(mylist,arm) 

しかし、それは、グループ全体で個別にARIMAモデルを実行していないようですどのようにlapplyを関数と共に正しく使用するかに関する助けに感謝してください。どうもありがとう。

+2

この関数で 'Value'カラムを使用しますか?すなわち、 'arm < - function(x)auto.arima(x $ Value)' – user20650

+0

ビンゴです。私はこの問題を投稿してから作業していましたが、関数がDate、Nameなどの不適切な変数についても計算していたことに気付いていました。 – empoleon

答えて

0

あなたは、マップ機能を使用することができます:lapplyを交換することが可能で

library(tidyverse) 
library(forecast) 
mylist %>% 
    split(.$Group) %>% 
    map(~auto.arima(.$Value)) 

はところで...これは

0

「データサイエンスのためのR」ギャレットとハドレーのでは標準的な例である通常、splitは続きます(tapplyのオブジェクト指向ラッパー)byで、データフレームを因子でスライスし、サブセットを定義された関数または無名関数に渡して処理することができます。

arm <- function(x) auto.arima(x$Value) 

aroma_list <- by(mydata, mydata$Group, FUN = arm) 
1

私はこれを理解することができました。

私は値の列を分離し、それを単純に実行する必要があるときに、データフレーム全体で関数を実行しようとしていました。

mylist <- split(mydata, mydata$Group) 
mylist 

arm <- function(x) plot(forecast(auto.arima(x$Value),h)) 
allarima <- lapply(mylist,arm) 

あなたは、データフレーム全体を表し、X単に対照的な機能で、私は、auto.arima(のx $値)を指定していることがわかります。

さらに、単にARIMAの出力を取得するのではなく、事前に定義した予測期間hを使用して、予測とプロットを直接呼び出すことができました。

私は正しい方向に向いているため、上記の情報は有益であり、多くのおかげでuser20650に感謝します。

関連する問題