3

以前に似たような別の質問をしました (ここ)

今、このデータセットを変更したい:

dt <- data.table(a=c("A","A","A"),b=1:3,c=c(0,1,0))
dt
   a b c
1: A 1 0
2: A 2 1
3: A 3 0

これに:

   a 1 2 3
1: A 0 1 0

したがって、列「b」の値は、列「c」の値を持つ列になるはずです。「a」の値は参加者として見ることができます (ここでは 1 人 (「A」)。元のデータセットは B などの複数の値で続きます。「転置」の後、列「a」には一意の値が含まれている必要があります (例: A 、B、Cなど)

助言がありますか?

4

1 に答える 1

5

私はあなたがこれでどこに向かっているのかを見ることができると思います。

以下は、bのさまざまなユニークなアイテムにも対応し、それらを並べる必要があります。

.u = unique(dt$b)                        # find first the unique columns
ans = dt[,as.list(c[match(.u,b)]),by=a]  # as.list is the way to make columns
setnames(ans,c("a",.u))                  # rename once afterwards is faster
ans
   a 1 2 3
1: A 0 1 0

より複雑なケースではテストされていません。

于 2013-09-10T12:30:15.540 に答える