-2

私はこのR言語に不慣れで、すべてのデータセットの戻り値を計算するのが難しいですIdentification

次のようにグループ化された月次観測の非常に大きなデータセットがあります。

Code      Subset   Identification   Names        Times       Value      %   
100       1001        10011         .....        201012       10        40 
100       1001        10012         .....        201012       11        60 
100       1002        10021         .....        201012        7        30 
100       1002        10022         .....        201012       13        70 
..... 
100       1001        10011        .....         201301       11        45 
100       1001        10012        .....         201301       15        55 
100       1002        10021        .....         201301        9        33 
100       1002        10022        .....         201301       17        67 

すべての の月次収益率を計算できる関数を作成する必要がありますIdentification。次に、「サブセット」の上位レベルで計算された値を集計する必要があります(平均加重「%」)。

この方法 で、ベクトルの形式を「%Y-%m」に変更しましたtimesyear-monthas.yearmon(as.character(Data$Times), format = "%Y%m")

そして、次のように、 andIdentificationを使用してすべてのリターンを計算しようとしました: splitsapplyxm <- split(Data, Identification) Retxm <- sapply(1:length(xm), function(x) returns(Value))

上記の関数を使用した出力は次のようになります。

        [,1]          [,2]          [,3]          [,4]          
[1,]            NA            NA            NA            NA        
[2,]  1.605198e-03  1.605198e-03  1.605198e-03  1.605198e-03 
[3,] -1.190902e-02 -1.190902e-02 -1.190902e-02 -1.190902e-02 
[4,]  3.318032e-03  3.318032e-03  3.318032e-03  3.318032e-03 

出力はあまり明確ではないため、行に Times を、ヘッダーにIdentification.

どうもありがとう!

4

1 に答える 1

0

類似した最小限のデータセットを次に示します。

set.seed(1)
df1 <- data.frame(id=sample(c("10011", "10012", "10013"), 6, replace=TRUE),
                  d1=rep(c(201012, 201101), each=3),
                  v1=ceiling(20*runif(6))
                  )

最初の質問に関しては、月と年に加えて日を指定しない限り、オブジェクトをDatebaseのようにフォーマットすることはできません。R月と年で指定された日付を処理するには、次を使用できます。

library(zoo)
df1$d1 <- as.yearmon(as.character(df1$d1), format="%Y%m")

質問の 2 番目の部分については、どのような種類の計算を実行しようとしているのかわかりません。メソッドに従って、実際splitdata.frame各要素で何かを行うことができます。たとえば、v1列の要素の合計を取得します。

l1 <- split(df1, df1$id)
sapply(1:length(l1), function(i) sum(l1[[i]]$v1))

編集私の Java が機能していないため、コメントを追加できません。あなたがやろうとしていることはまだ明らかではありません。実際の例でそれを詳しく説明できればより良いでしょう。可能であれば、元の質問を編集してみてください。

于 2013-10-15T02:22:42.293 に答える