4

このようなdata.frameを考える

> x <- data.frame(A=c('a','a','b','b'), B=c(1,2,3,4))
> x
  A B
1 a 1
2 a 2
3 b 3
4 b 4

に変身させたい

  a b
1 1 3
2 2 4

簡単な操作のはずなのですが、やり方がわかりません。私が持っている最も近いのはcast(x, . ~ A)、少なくとも「未定義の列が選択されている」と失敗しないことですが、それでも私が望むものではありません。

どんな助けでも感謝します。

4

3 に答える 3

3

このような:

data.frame( tapply(x$B, x$A, list))

結果:

  a b
1 1 3
2 2 4
于 2012-04-18T12:57:38.410 に答える
3

私もcast最近理解に苦しんでいます。目的の出力には、値13同じ行に表示されます。しかし、あなたの入力はその情報を提供しません。id列を追加すると、問題が解決します。

library(reshape2)

x <- data.frame(id=c(1, 2, 1, 2), A=c('a', 'a', 'b', 'b'), B=c(1, 2, 3, 4))

dcast(x, id ~ A, value.var="B")
#   id a b
# 1  1 1 3
# 2  2 2 4
于 2012-04-18T16:52:00.603 に答える
2

B の値を x と同じ順序で維持したい場合は、これを試すことができます。

data.frame(split(x$B, x$A))
于 2012-04-18T12:11:50.943 に答える