2016-03-22 8 views
-2

Ich habe einen Vektor wieKonvertieren einen Vektor von Strings in einen numerischen Vektor, basierend auf String-Sequenzen

A <- c("A","A","B","B", "C","C","C", "D") 

Ich mag wäre es in einen numerischen Vektor auf der Sequenz in A-Basis konvertieren, das würde aussehen wie:

c(1:2, 3:4, 5:7, 8) 

Ist das möglich?

+0

Was ist Ihre erwartete Antwort. Die Länge von "A" und "B" ist unterschiedlich – akrun

+0

Der Vektor B ist meine Antwort. Ich habe A und möchte es in B verwandeln – nouse

+0

Aber A hat 8 Elemente und B mit 9 – akrun

Antwort

4

Versuchen:

A <- c("A","A","B","B", "C","C","C", "D") 
as.numeric(factor(A)) 
[1] 1 1 2 2 3 3 3 4 

und im Fall, dass Sie wirklich eine Sequenz von 1 bis zur length des Vektors:

labels(factor(A)) 
[1] "1" "2" "3" "4" "5" "6" "7" "8" 

oder

1:length(A) 
[1] 1 2 3 4 5 6 7 8 

Wenn die erste Sequenz ist Was Sie wollen, können Sie plyr::mapvalues interessant finden, wenn Sie mehr comp haben Fälle zu einem bestimmten Zeitpunkt Zum Beispiel

library(plyr) 
mapvalues(A, from=unique(A), to=1:4) 
[1] "1" "1" "2" "2" "3" "3" "3" "4" 

Dies ist praktisch, wenn Sie ein bisschen mehr Kontrolle benötigen. Zum Beispiel könnten Sie leicht andere Ausgabe als to Argument, z. month.name[1:4].

+0

Das ist schon sehr nah. Mein Paket erwartet, dass ein Vektor ein Diagramm abhängig von der Faktorstufe koloriert: Ich muss sagen, wo neue Faktorstufen beginnen (daher die Syntax 1: 2,3: 4,5: 7,8). Ich sehe, ob es mit diesen Vorschlägen funktionieren kann. – nouse

+0

Nur ein Hinweis: Wenn Sie einen Indikator für den Beginn eines neuen Faktor-Levels benötigen, können Sie unter der Annahme, dass Ihr Dataset in der Faktorebene angeordnet ist, etwas wie "diff (as.numeric (factor (A))") versuchen. Die meisten Pakete sollten jedoch normale Faktoren verstehen können. – coffeinjunky

Verwandte Themen