0

私は、多数のディストリビューターに対して一連のクロス集計を生成する必要がある分析を行っています。データは顧客レベルであり、各顧客はディストリビューターにマップされます。ディストリビューターの数が多いので、プロセスを自動化しようとしています。

ディストリビューター ID に基づいてデータ フレームを動的に作成するのに行き詰まっています。

ここに私がしようとしているものがあります:

for (i in 1:length(DiD)){ #vector comprising list of distributors
    paste("use",DiD[[1]],sep="_") <- subset(master table, Field1=="NA"& Field2=="valid" & Field3==as.character(DiD[[1]])) 
}

追加情報:

DiD[[1]] = 1234

目的の出力:、およびによるuse_1234マスター データ サブセットを含む データ フレームField1Field2DiD=1234

スローされるエラー: 貼り付け部分の問題と、次のように指定する問題に直面していますField3DiD[[1]]

Error in eval(expr, envir, enclos) :
dims [product 1] do not match the length of object [529]

十分な情報を提供できたことを願っています。ありがとうございます!

PS: フォーラムで質問に対する回答があった場合は申し訳ありませんが、見つけられませんでした。

4

2 に答える 2

1

ここで使用する必要はありませんfor。subset は data.frame を生成します。

 res <- subset(master.table,Field1== NA & 
                            Field2=="valid" & 
                            Field3==as.character(DiD[[1]])) 

次に、使用できますassign

  assign(paste("use",DiD[[1]],sep="_"),res)

DiD名前のリストであると仮定すると、次のようなものが必要だと思います。

 list.df <- lapply(DiD, function(x)  subset(master.table,is.na(Field1) & 
                            Field2=="valid" & 
                            Field3==as.character(x)))
 names(list.df) <- DiD

これにより、data.frames の名前付きリストが作成されます。

于 2013-07-04T15:07:33.117 に答える
0

これを使用してこれを解決することもできると思いますsplit

dfs <- 
split(master.table[master.table$Field1=="NA" & # probably should be is.na(master.table$Field1), but we don't have the data
                   master.table$Field2=="valid",], Field3)
于 2013-07-04T15:17:24.357 に答える