0

で3つの実験を実行し、それぞれが数字のリストで乱暴になりました。

data1 = c(1,1,1,2,2)
data2 = c(2,2,3,3,3,4)
data3 = c(1,1,1,4,4,4,4,4,4, 5, 6)

ここで、各実験での各数の発生をカウントしたいと思います。histはクラスmidを使用するため、これを行いますtable(histoの良いところは、一意の値のリストを指定できることです)

# save histograms
result = list()
result$values[[1]] = as.data.frame(table(data1), stringsAsFactors=F)
result$values[[2]] = as.data.frame(table(data2), stringsAsFactors=F)
result$values[[3]] = as.data.frame(table(data3), stringsAsFactors=F)

str(result)

今は異なる長さのデータフレームのリストしかありませんが、同じ長さのリストを含む単一のデータフレームが欲しいです(それらを減算したい)

nerv=data.frame(names=c(1, 2, 3, 4, 5, 6))
nerv[[2]] = c(3, 2, 0, 0, 0, 0)
nerv[[3]] = c(0, 2, 3, 1, 0, 0)
nerv[[4]] = c(3, 0, 0, 6, 1, 1)

table()どういうわけか、どの値を数えるかを伝えることは可能ですか?または、別のリスト(count unique(data1, data2, data3)data1内)の値のリストのカウンターを許可する別の関数はありますか?

または、data.framesをマージして、ゼロを空のスペースに埋める必要がありますか?

4

1 に答える 1

2

これにより、データフレームが生成されます。

lev <- unique(c(data1, data2, data3)) # the unique values

data.frame(names = lev,
           do.call(cbind,
                   lapply(list(data1, data2, data3),
                          function(x) table(factor(x, levels = lev)))))

秘訣は、数値ベクトルを指定されたレベルの因子に変換することです。関数tableはすべてのレベルを使用します。

出力:

  names X1 X2 X3
1     1  3  0  3
2     2  2  2  0
3     3  0  3  0
4     4  0  1  6
5     5  0  0  1
6     6  0  0  1
于 2012-11-05T09:39:08.603 に答える