7

次のようなデータフレームがあります。

index   ID   date              Amount
2       1001 2010-06-08         0
21      1001 2010-10-08        10
6       1002 2010-08-16        30
5       1002 2010-11-25        20
9       1003 2010-01-01         0
8       1003 2011-03-06        10
12      1004 2012-03-12        10
11      1004 2012-06-21        10
15      1005 2010-01-01        30
13      1005 2010-04-06        20

このデータをサブセット化して、このような ID ごとに 1 つの新しいデータ フレームを作成します。

index   ID   date              Amount
2       1001 2010-06-08         0
21      1001 2010-10-08        10

6       1002 2010-08-16        30
5       1002 2010-11-25        20

等々。

新しいデータ フレームを保存する必要はありませんが、それを使用していくつかの基本的な計算を実行します。また、10000 を超える ID で構成されるテーブル全体でこれを実行したいため、ループが必要です。私はこれを試しました

    temp <- data.frame(Numb=c(),Dt=c(),Amt=c())
for (i in seq_along(stNew$ID)){
   temp[i,] <- subset(stNew, stNew[i,]==stNew$ID[i])
}

しかし、それはうまくいきませんでした。助言がありますか?

4

3 に答える 3

8

このようになるかもしれません

    IDs<-unique(df$ID)
    for (i in 1:length(IDs)){ 
    temp <- df[df$ID==IDs[i],]
    #more things to do with temp
    }
于 2013-11-09T19:32:41.583 に答える
5
    iris_split <- split(iris, iris$Species)

動的に data.frame 名を割り当てることができます

    new_names <- as.character(unique(iris$Species))

    for (i in 1:length(iris_split)) {
    assign(new_names[i], iris_split[[i]])
    }
于 2016-06-27T05:00:46.103 に答える