またはtab
を使用して作成したかのように表示されます。as.data.frame(table(...)))
data.frame(table(...))
as.data.frame.table
そして、data.frame(table(...))
dimnames を に強制しfactor
ます。
# an example
foo <- data.frame(a = sample(10,size=100,replace=TRUE),b = sample(10, size = 50, replace = TRUE))
str(data.frame(table(foo))
# 'data.frame': 100 obs. of 3 variables:
# $ a : Factor w/ 10 levels "1","2","3","4",..: 1 2 3 4 5 6 7 8 9 10 ...
# $ b : Factor w/ 10 levels "1","2","3","4",..: 1 1 1 1 1 1 1 1 1 1 ...
# $ Freq: int 1 2 2 2 3 0 4 0 0 0 ..
str(as.data.frame(table(foo))
# 'data.frame': 100 obs. of 3 variables:
# $ a : Factor w/ 10 levels "1","2","3","4",..: 1 2 3 4 5 6 7 8 9 10 ...
# $ b : Factor w/ 10 levels "1","2","3","4",..: 1 1 1 1 1 1 1 1 1 1 ...
# $ Freq: int 1 2 2 2 3 0 4 0 0 0 ..
reshape2
頻度表テーブルを作成するために使用できます。これにより、変数のタイプが保持されます
library(reshape2)
str(dcast(a+b~'Freq',data = foo,value.var = 'b', fun = length))
# 'data.frame': 56 obs. of 3 variables:
# $ a : int 1 1 1 1 1 1 1 1 2 2 ...
# $ b : int 1 2 3 5 6 7 8 10 1 2 ...
# $ Freq: int 1 1 2 4 2 2 1 2 2 5 ...
または使用data.table
library(data.table)
DT <- data.table(foo)
str(DT[, .N, by = list(a,b)])
# Classes ‘data.table’ and 'data.frame': 56 obs. of 3 variables:
# $ a: int 1 4 5 10 2 1 5 4 4 7 ...
# $ b: int 5 6 1 3 2 6 4 4 5 1 ...
# $ N: int 4 1 3 1 5 2 3 3 1 4 ...
# - attr(*, ".internal.selfref")=<externalptr>