2016-03-21 22 views
0

Ich habe eine CSV-Datei mit folgendem Format:Transformation nicht-numerische Daten in numerischen Daten mit R

android ; login.html , connect.json , page1.json 

windows ; login.html , connect.json , page1.json , page2.html , page5.html 

windows ; login.html , connect.json , page4.json 

Um PCA zu tun multivariate Analyse mit diesen Variablen, müssen diese Variablen wie diese numerisch sein:

1 ; 3 

0 ; 5 

0 ; 3 

0 oder 1 um anzuzeigen, ob Windows oder Android gefolgt von der Anzahl der Seiten. Ich suche nach einer Möglichkeit, diese nicht numerischen Daten zu ändern Irgendeine Idee bitte? Beste

+1

Lesen mit dem Trennzeichen in als ' ""', 'verwenden count.fields' auf der zweiten Spalte und' == 'für das erste Spalte .... – A5C1D2H2I1M1N2O1R2T1

Antwort

1

Versuchen strsplit und lengths:

DF <- read.table(text = Lines, sep = ";", as.is = TRUE, strip.white = TRUE) 
transform(DF, V1 = as.numeric(V1 == "android"), V2 = lengths(strsplit(V2, ","))) 

geben:

V1 V2 
1 1 3 
2 0 5 
3 0 3 

Hinweis: Wir haben diesen Eingang:

Lines <- "android ; login.html , connect.json , page1.json 
windows ; login.html , connect.json , page1.json , page2.html , page5.html 
windows ; login.html , connect.json , page4.json" 
2

Hier ist ein Ansatz:

data.frame(V1 = as.numeric(mydf$V1 == "android"), 
      V2 = count.fields(textConnection(mydf$V2), sep = ",")) 
# V1 V2 
# 1 1 3 
# 2 0 5 
# 3 0 3 

Beispieldaten:

mydf <- read.table(
    header = FALSE, sep = ";", stringsAsFactors = FALSE, strip.white = TRUE, 
    text = '"android" ; "login.html , connect.json , page1.json" 
"windows" ; "login.html , connect.json , page1.json , page2.html , page5.html" 
"windows" ; "login.html , connect.json , page4.json"') 
+0

Danke @A Handcart und Mohair Es funktioniert. Prost – Fish