我有一个数据集,我想用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,但同样的解决方案对我不起作用。
答案 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