2016-12-21 8 views
0

mit i meine Eingabe so etwas wie dieses haben,wie Strings Zeichen mit mehreren Trennzeichen zu spalten str Split

x 
    nct_id       drug 
1 NCT100   paracetomol+velacade 
2 NCT123      bortezomib 
3 NCT145      velacade 
4 NCT645   velacade,dexamethaone 
5 NCT768    bortezomib||velacde 
6 NCT890 velacade\\bortezomib\\ethonisde 

i verwendet den folgenden Code Spalte 2 auf einmal

y2<-strsplit(x[,2],split="[||,,,\\,+]") 
> y2 
[[1]] 
[1] "paracetomol" "velacade" 

[[2]] 
[1] "bortezomib" 

[[3]] 
[1] "velacade" 

[[4]] 
[1] "velacade"  "dexamethaone" 

[[5]] 
[1] "bortezomib" ""   "velacde" 

[[6]] 
[1] "velacade" "bortezomib" "ethonisde" 
basierend auf verschiedenen Trennzeichen aufgeteilt

ich bin ein zusätzliches Leerzeichen oder Zeichen bei 5 immer so, wie man es vermeiden

Antwort

2

Sie können dies auch beheben, indem Sie Ihren regulären Ausdruck ändern. Ich habe einen zweiten umgekehrten Schrägstrich hinzugefügt, um den ersten umgekehrten Schrägstrich zu umgehen und direkt auf Ihr Problem einzugehen, ein "+" hinzugefügt, um der Regex-Engine die Wiederholung von so vielen Zeichen in der Zeichenklasse "[\ |, +]" zu ermöglichen erscheinen nebeneinander.

Beachten Sie, dass ich die Arzneimittelvariable in as.character eingewickelt habe, weil es eine Faktorvariable aufgrund der Tatsache ist, dass read.table Zeichenketten standardmäßig in Faktoren konvertiert.

strsplit(as.character(df$drug), split="[\\|,+]+") 
[[1]] 
[1] "paracetomol" "velacade" 

[[2]] 
[1] "bortezomib" 

[[3]] 
[1] "velacade" 

[[4]] 
[1] "velacade"  "dexamethaone" 

[[5]] 
[1] "bortezomib" "velacde" 

[[6]] 
[1] "velacade" "bortezomib" "ethonisde" 

Daten

df <- read.table(header=TRUE, text="nct_id drug 
1 NCT100   paracetomol+velacade 
2 NCT123      bortezomib 
3 NCT145      velacade 
4 NCT645   velacade,dexamethaone 
5 NCT768    bortezomib||velacde 
6 NCT890 velacade\\bortezomib\\ethonisde") 
+0

thankyou, gearbeitet !!! –

2

Wir str_extract

verwenden können
library(stringr) 
str_extract_all(x$drug, "[A-Za-z]+") 
#[[1]] 
#[1] "paracetomol" "velacade" 

#[[2]] 
#[1] "bortezomib" 

#[[3]] 
#[1] "velacade" 

#[[4]] 
#[1] "velacade"  "dexamethaone" 

#[[5]] 
#[1] "bortezomib" "velacde" 

#[[6]] 
#[1] "velacade" "bortezomib" "ethonisde" 
Verwandte Themen