1

次のような data.frame があります。

C1    C2   C3   C4   
 1    -1   -1   1     
 1     1   -1   1    
 1     1   -1   1   
 1    -1    1  -1      

-1 と 1 の出現を列ごとにカウントしたいので、次を使用しました。

タブ = 適用 (DF、2、テーブル)

次の文字列を使用した後:

final <- as.data.frame(do.call("cbind", tab))      

結果を data.frame として書き込みます。残念ながら、最初の要素が原因でエラーが返されます。

タブ[[1]]
1
4

タブ[[2]]
-1 1
2 2

..........

tab[[1]]したがって、結果をdata.frameとして書き込めるように、-1の周波数に関して0を追加したいと思います。

4

2 に答える 2

2
DF <- read.table(text="C1    C2   C3   C4   
 1    -1   -1   1     
 1     1   -1   1    
 1     1   -1   1   
 1    -1    1  -1  ",header=TRUE)

res <- table(stack(DF))
#       ind
# values C1 C2 C3 C4
#     -1  0  2  3  1
#     1   4  2  1  3

res2 <- as.data.frame(res)
#   values ind Freq
# 1     -1  C1    0
# 2      1  C1    4
# 3     -1  C2    2
# 4      1  C2    2
# 5     -1  C3    3
# 6      1  C3    1
# 7     -1  C4    1
# 8      1  C4    3

reshape(res2, timevar = "ind", idvar = "values", direction = "wide")
#   values Freq.C1 Freq.C2 Freq.C3 Freq.C4
# 1     -1       0       2       3       1
# 2      1       4       2       1       3

別の方法としてres <- ftable(stack(DF))、 を使用して直接ファイルに書き込むことができる がありますwrite.ftable

于 2013-06-15T08:46:55.260 に答える