用计数重塑数据

时间:2014-07-29 02:24:26

标签: r reshape2

我有一个数据集,我想用R中的包reshape2重塑它,但是我收到了这个错误:

Aggregation function missing: defaulting to length

这是我的数据的头部():

cat_one customer valor
cama        A     1
cama        B     1
cama        C     1
mesa        D     1
mesa        A     1
mesa        A     1

我希望像这样重塑它,并在两个变量之间进行计数:

customer     cama    mesa
A             1       0
B             2      ...
C
D            ...     ...

这是我的代码:

dcast(dados_teste, cat_one ~ customer, value.var = 'valor')

我正在关注其他question,但同样的解决方案对我不起作用。

1 个答案:

答案 0 :(得分:5)

您已将公式的LHS和RHS混淆了。

尝试:

library(reshape2)
dcast(dados_teste, customer ~ cat_one, value.var = "valor")
# Aggregation function missing: defaulting to length
#   customer cama mesa
# 1        A    1    2
# 2        B    1    0
# 3        C    1    0
# 4        D    0    1

"错误"您所指的实际上只是一个warning,它告诉您它只是计算值的数量 - 不应用任何其他函数。所以,在这种情况下,它是完全可以接受的。

如果您想摆脱它,请指定fun.aggregate = length

dcast(dados_teste, customer ~ cat_one, 
      value.var = "valor", fun.aggregate = length)

如果它只计算了您之后的两列,您还可以查看table

as.data.frame.matrix(table(dados_teste[c(2, 1)]))
#   cama mesa
# A    1    2
# B    1    0
# C    1    0
# D    0    1