2

以前、リスト ビューからクロス テーブルを作成する方法について質問しました。これを使用することをお勧めしましたがxtabs、これはうまく機能します。今日は逆にクロステーブルからリストビューテーブルを作ろうと探していました。逆の式を見つけたいと思っていましたが、成功していません。これには定義済みの関数があると確信していますが、それを見つけることができません。

次の表があります。

# load table     
crosstable <- structure(list(col1 = c(0, 0, 1, 0, 0, 0, 0, 0, 0), col2 = c(0, 1, 0, 0, 0, 0, 0, 0, 0), col3 = c(0, 0, 0, 0, 0, 0, 0, 0, 1), col4 = c(1, 0, 0, 0, 0, 0, 0, 0, 0), col5 = c(0, 0, 0, 0, 0, 0, 0, 1, 0), col6 = c(0, 0, 0, 0, 0, 1, 0, 0, 0), col7 = c(0, 0, 0, 0, 1, 0, 0, 0, 0), col8 = c(0, 0, 0, 0, 0, 0, 1, 0, 0)), .Names = c("col1", "col2", "col3", "col4", "col5", "col6", "col7", "col8"), row.names = c("row1", "row2", "row3", "row4", "row5", "row6", "row7", "row8", "row9"), class = "data.frame")

#display table
crosstable

     col1 col2 col3 col4 col5 col6 col7 col8
row1    0    0    0    1    0    0    0    0
row2    0    1    0    0    0    0    0    0
row3    1    0    0    0    0    0    0    0
row4    0    0    0    0    0    0    0    0
row5    0    0    0    0    0    0    1    0
row6    0    0    0    0    0    1    0    0
row7    0    0    0    0    0    0    0    1
row8    0    0    0    0    1    0    0    0
row9    0    0    1    0    0    0    0    0

これを次のような表に変換したいと思います。

row1 col1 0
row1 col2 0
row1 col3 0
row1 col4 1
row1 col5 0
...

これを達成するのに役立つ関数の方向に私を向けることができる人はいますか?

4

2 に答える 2

4

ベースRに固執すると、次を使用できますstack

CTLong <- data.frame(rows = rownames(crosstable), stack(crosstable))
CTLong <- CTLong[order(CTLong$rows), ]
head(CTLong)
   rows values  ind
1  row1      0 col1
10 row1      0 col2
19 row1      0 col3
28 row1      1 col4
37 row1      0 col5
46 row1      0 col6
于 2013-02-20T07:30:22.463 に答える
2

あなたは得るために使うことができますreshape2::melt

library(reshape2)
melt(cbind(rownames(crosstable),crosstable))
# Using rownames(crosstable) as id variables
#    rownames(crosstable) variable value
# 1                  row1     col1     0
# 2                  row2     col1     0
# 3                  row3     col1     1
# 4                  row4     col1     0
# 5                  row5     col1     0
# 6                  row6     col1     0
# 7                  row7     col1     0
# ...
于 2013-02-20T07:29:05.217 に答える