2016-05-06 6 views
0

Ich arbeite mit einem Datenrahmen in R. Es hat etwa 18 Spalten mit Zahlen in ihnen. Einige Zellen haben ein "P", gefolgt von einer Zahl. Für diese Fälle würde Ich mag die „P“, drehen Sie den Rest der Zeichen auf eine Nummer entfernen und nehmen dann die Zahl und dividieren durch 5.Finden Sie ein bestimmtes Zeichen in einer Zeichenfolge, entfernen Sie es, drehen Sie den Rest der Zeichen zu Nummer und dividieren durch 5

> Replace<-data.frame(group=c("P4", "25", "4", "P1", "25")) 
    > Replace 
    group 
    1 P4 
    2 25 
    3  4 
    4 P1 
    5 25 
    > 

Zum Beispiel in „Ersetzen“ Ich würde wie "P4" zu "0.8" und "P1" zu "0.2". Aber "25", "4" und "25" sollten gleich bleiben. Danke für die Hilfe!

+0

'as.numerisch (gsub (Muster =" P ", Ersatz =" ", $ Gruppe ersetzen))/5))'. Dann wenden Sie das auf alle Ihre Spalten an. – zacdav

+0

Wohin sollen die Klammern gehen, damit es nicht durch 5 geteilt wird? – RyanStephens

+0

müssten Sie ifelse verwenden. @ Psidoms Antwort ist am besten und verwendet das "dplyr" -Paket - ich empfehle das zu verwenden. – zacdav

Antwort

3
library(dplyr) 
Replace <- mutate(Replace, group = ifelse(grepl("P", group), 
        as.numeric(gsub("P", "", group))/5, as.character(group))) 
+0

Dies ist perfekt, funktioniert wunderbar. Ich denke, ich kann dann alle Spalten auf einmal machen, indem ich sie mit tidyr kollabiere. Danke noch einmal! – RyanStephens

+0

Sie können die 'mutate_each()' Funktion verwenden. 'muate_each (Ersetzen, Spaß (ifelse (grepl (" P ",.), as.numerisch (gsub (" P "," ",.))/5, as.Zeichen (.))))' – Psidom

Verwandte Themen