Изменение данных с помощью count

У меня есть набор данных, и я хочу изменить его с помощью пакета reshape2 из R, но получаю эту ошибку:

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')

И я следую этому другому вопросу, но то же самое решение не работает для меня.


person user3511563    schedule 29.07.2014    source источник


Ответы (1)


Вы перепутали левую и правую части формулы.

Пытаться:

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
person A5C1D2H2I1M1N2O1R2T1    schedule 29.07.2014