2017-01-12 4 views
1

J'ai un data.frame « UIQ » dans le format suivant:ACAST de temps à grand format

  CNS_CD  PROD_CD   QTY 
1   M00000001 CFGO301WABU  1 
2   M00000002 DFGK122EARE  1 
3   M00000002 CWGO154COGY  1 
4   M00000004 CWGC003COTA  1 
5   M00000005 CWGC002COTA  1 
6   M00000005 CFDC002COTA  1 
7   M00000006 CFDT202AISL  1 
8   M00000007 CFDO309FIPE  1 
9   M00000007 CWGO314WABU  1 
10  M00000007 CWGO326EAVI  1 
11  M00000008 CFDO203COOW  1 
12  M00000009 CWGK323EABL  1 
13  M00000010 CFDO326EAVI  1 
14  M00000010 CWGT337EANY  1 
15  M00000011 CFDO203FIVI  1 

Je dois convertir ces données à une matrice telle que j'ai un compte de la quantité pour chaque article dans PROD_CD contre chaque CNS_CD.
Si certains PROD_CD ne sont pas listés par rapport à un CNS_CD, ils devraient être dans la matrice avec la valeur 0. Essayer de les convertir en un format de matrice d'article utilisateur avec count.

classe (CNS_CD), classe (PROD_CD) est "caractère". Je essayé ceci:

acast(data = uiq,formula = CPH_CNS_CD~PROD_CD,fun.aggregate = count,value.var = uiq$QTY) 

et obtenu cette erreur:

Error: value.var (1111111111111111111111111111111111111111111111111111 
In addition: Warning message: 
In if (!(value.var %in% names(data))) { : 
the condition has length > 1 and only the first element will be used 

Il fonctionne en quelque sorte lorsque les paramètres de fun.aggregate et value.var ne sont pas fournis avec la même fonction. Quel est le problème ici ou existe-t-il d'autres moyens d'atteindre le format requis?

 CNS_CD  CFGO301WABU DFGK122EARE CWGO154COGY CWGC003COTA ..... 
    M00000001   1   0    0    0 
    M00000002   0   1    1    0 
    M00000004   0   0    0    1 

Répondre

1

Nous pouvons utiliser length

acast(data = uiq,formula = CNS_CD~PROD_CD,fun.aggregate = length,value.var = "QTY") 
+0

Il renvoie une erreur que je l'ai mentionné dans la question ci-dessus. – TUSHAr

+0

@Tushar Basé sur l'exemple, il ne me jette aucune erreur. J'ai fait quelques mises à jour dans le code. Veuillez réessayer. – akrun

+0

Excuses. J'utilisais value.var = QTY. Merci beaucoup. Mais cela ne fonctionne pas quand je donne la fonction "count"? – TUSHAr