2

ここに私のデータフレームがあります:

a d c
d a b
b e c 
e b b
c c e
f f d

このデータフレームで知りたい
のは、各要素が存在する列に何回出現するかということです。次に、それらをマトリックスに格納します。
したがって、マトリックスは次のようになります。

1 1 0
1 1 2
1 1 2
1 1 1
1 1 1
1 1 

これを行うための簡単なコードを持っている人はいますか? みんなの助けに感謝します。

別のデータフレーム

     [,1] [,2] [,3] [,4] [,5] [,6]
 [1,]    1    1    1    1    1    1
 [2,]    1    1    1    1    1    1
 [3,]   -1   -1   -1    1    1    1
 [4,]   -1   -1   -1    1    1    1
 [5,]    2    2   -2    1   -1   -1
 [6,]    2    2   -2    1   -1   -1
 [7,]   -2   -2    2    1   -1   -1
 [8,]   -2   -2    2    1   -1   -1
 [9,]    3   -3    3   -1    1   -1
[10,]    3   -3    3   -1    1   -1
[11,]   -3    3   -3   -1    1   -1
[12,]   -3    3   -3   -1    1   -1
[13,]    4   -4   -4   -1   -1    1
[14,]    4   -4   -4   -1   -1    1
[15,]   -4    4    4   -1   -1    1
[16,]   -4    4    4   -1   -1    1

使っていいですかdo.call(cbind, tapply(unlist(df), gl(ncol(df),nrow(df)), table))

4

1 に答える 1

4

table基本的に、各列を呼び出すだけです。

df = read.table(text="a d c
d a b
b e c 
e b b
c c e
f f d", header=FALSE)

df_counts = lapply(
  df,
  function(x) {
    table(factor(x, levels=c("a", "b", "c", "d", "e", "f")))
  }
)
df_counts = matrix(unlist(df_counts), ncol=3)

出力:

     [,1] [,2] [,3]
[1,]    1    1    0
[2,]    1    1    2
[3,]    1    1    2
[4,]    1    1    1
[5,]    1    1    1
[6,]    1    1    0

同じアイデアでのわずかに異なる実装:

do.call(cbind, tapply(unlist(df), gl(ncol(df),nrow(df)), table))
于 2013-05-01T10:22:26.293 に答える