سؤال

لدي مجموعة بيانات وأريد إعادة تشكيلها باستخدام الحزمة 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')

وأنا أتبع هذا الآخر سؤال, ، لكن نفس الحل لا يعمل معي.

هل كانت مفيدة؟

المحلول

لقد قمت بخلط 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top