0

簡単な質問があります。皆さんの意見に本当に感謝しています。あなたは私のプロジェクトに大いに役立ちました。R のデータ フレームについて追加の質問があります。

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

    C <- c("","","","","","","","A","B","D","A","B","D","A","B","D")
    D <- c(NA,NA,NA,2,NA,NA,1,1,4,2,2,5,2,1,4,2)
    G <- list(C=C,D=D)
    T <- as.data.frame(G)
    T
   C  D
1     NA
2     NA
3     NA
4     2
5     NA
6     NA
7     1
8  A  1
9  B  4
10 D  2
11 A  2
12 B  5
13 D  2 
14 A  1
15 B  4
16 D  2 

すべての繰り返し文字を 1 つに凝縮できるようにしたいと考えており、次のようになります。

    J B C E
  1   2 1
  2 A 1 2 1
  3 B 4 5 4
  4 D 2 2 2

もちろん、データはすべて同じです。データが圧縮され、データを保持するために新しい列が形成されているだけです。それを行う簡単な方法があると確信していますが、私が調べた本から、これについて何も見たことがありません!

編集これまでの回答では機能しなかったため、例を編集しました。NAとブランクスとブランクスの凹凸が寄与してるのかな??

4

3 に答える 3

1

悪い癖を避けるために T を df に変更しました。リストを返します。これはあなたが望むものではありませんが、そこから変換できます。

C <- c("A","B","D","A","B","D","A","B","D")
D <- c(1,4,2,2,5,2,1,4,2)
my.df <- data.frame(id=C,val=D)

ret <- function(x) x
by.df <- by(my.df$val,INDICES=my.df$id,ret)
于 2011-07-10T00:15:26.730 に答える
1

ここに変形ソリューションがあります:

require(reshape)
cast(T, C ~ ., function(x) x)
于 2011-07-10T00:06:01.287 に答える