2017-01-12 1 views
1

Ich habe einen data.frame „uiq“ in folgendem Format:ACast von lang auf Groß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 

ich diese Daten an eine Matrix verdeckte müssen, so dass ich für jedes Element eine Zählung der Quantität haben in PROD_CD gegen jede CNS_CD.
Wenn einige PROD_CD noch nicht für eine CNS_CD aufgelistet ist, sollte sie in der Matrix mit dem Wert 0 vorhanden sein. Versuchen Sie, sie in ein Benutzer-Element-Matrixformat mit Anzahl umzuwandeln.

Klasse (CNS_CD), Klasse (PROD_CD) ist "Zeichen". Ich versuchte dies:

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

und bekam diesen Fehler:

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 

Es funktioniert irgendwie, wenn die fun.aggregate und value.var Parameter nicht mit der gleichen Funktion versorgt werden. Worum geht es hier, oder gibt es alternative Wege, um das gewünschte Format zu erreichen?

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

Antwort

1

Wir length

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

verwenden Es wirft einen Fehler, die ich oben in der Frage erwähnt. – TUSHAr

+0

@Tushar Basierend auf dem Beispiel, Es wirft keinen Fehler für mich. Ich habe einige Aktualisierungen im Code vorgenommen. Bitte versuchen Sie es erneut – akrun

+0

Entschuldigung. Ich habe value.var = QTY verwendet. Danke vielmals. Aber das funktioniert nicht, wenn ich die Funktion "count" gebe? – TUSHAr