2016-04-08 11 views
3

Ich habe etwas über Internet recherchiert und bis jetzt habe ich gerade Möglichkeiten gefunden, die ersten/letzten Buchstaben von Beobachtungen mit susbstr zu entfernen, aber nicht einen Befehl, der wie CTRL + F-findandreplace wäre. Der Trick hier ist, dass ich nicht unbedingt weiß wo die Wörter die ich fallen lassen möchte!Wie entfernt man bestimmte Wörter aus Beobachtungen in Stata oder R?

My-Datensatz sieht wie folgt aus:

Hosp_code Hosp Hosplat Hosplon 
RRK RRK - UNIVERSITY HOSPITALS BIRMINGHAM NHS FOUNDATION TRUST 52.453271 -1.9362835 
RLU RLU - BIRMINGHAM WOMEN'S NHS FOUNDATION TRUST 52.453184 -1.9422432 
5MX 5MX - HEART OF BIRMINGHAM TEACHING PCT 52.471575 -1.9367724 
NO0 NO0 - HEALTHHARMONIE LIMITED 52.470965 -1.9243192 
NLU NLU - SK:N (LASERCARE CLINICS LTD) 52.470838 -1.9220819 
NXX NXX - SCRIVENS LTD 52.47148 -1.91341 
AGL AGL - ADDITIONAL COMMUNITY MEDICAL SERVICES LTD 52.477343 -1.917197 
5M1 5M1 - SOUTH BIRMINGHAM PCT 52.445922 -1.8928915 
NQR NQR - PRIMECARE PRIMARY CARE 52.484113 -1.9173169 
RXT RXT - BIRMINGHAM AND SOLIHULL MENTAL HEALTH NHS FOUNDATION TRUST 52.484113 -1.9173169 
RRJ RRJ - THE ROYAL ORTHOPAEDIC HOSPITAL NHS FOUNDATION TRUST 52.421133 -1.9608273 
RXK RXK - SANDWELL AND WEST BIRMINGHAM HOSPITALS NHS TRUST 52.48982 -1.9294268 
RQ3 RQ3 - BIRMINGHAM CHILDREN'S HOSPITAL NHS FOUNDATION TRUST 52.485173 -1.8944604 
RYW RYW - BIRMINGHAM COMMUNITY HEALTHCARE NHS TRUST 52.487323 -1.8858108 
5PG 5PG - BIRMINGHAM EAST AND NORTH PCT 52.491369 -1.886036 
NIT NIT - SOUTH DOC SERVICES LIMITED HQ 52.401796 -1.9620201 
RR1 RR1 - HEART OF ENGLAND NHS FOUNDATION TRUST 52.477876 -1.8275305 
NIS NIS - COVENTRY AND WARWICKSHIRE DIAGNOSTIC SERVICES LIMITED 52.462504 -1.8159336 
NDT NDT - WEST MIDLANDS DIAGNOSTIC SERVICES LTD 52.462504 -1.8159336 
5PF 5PF - SANDWELL PCT 52.523328 -2.0026388 
TAJ TAJ - BLACK COUNTRY PARTNERSHIP NHS FOUNDATION TRUST 52.519255 -2.0188053 
NEP NEP - TICCS ULTRASOUND LIMITED 52.510017 -1.8113152 
NL7 NL7 - ASSURA VERTIS URGENT CARE CENTRES (BIRMINGHAM) 52.542091 -1.8778985 
NNT NNT - ASSURA KINGSTANDING 52.542091 -1.8778985 
5QW 5QW - SOLIHULL PCT 52.391695 -1.8081752 
NR9 NR9 - JOHN TAYLOR HOSPICE COMMUNITY INTEREST COMPANY 52.527341 -1.8234016 
RYK RYK - DUDLEY AND WALSALL MENTAL HEALTH PARTNERSHIP NHS TRUST 52.508312 -2.0844533 

ich entfernen möchten: - Die ersten drei Buchstaben (z RRK -) - jede Erwähnung von "LTD" "LTD "LIMITED" "HQ" "LLP" "TRUST" "FOUNDATION TRUST"

Jeder Vorschlag?

+1

in R siehe 'gsub' – Batanichek

+1

oder http://www.inside-r.org/packages/cran/stringr/docs/str_replace_all –

+0

Nur aus Neugier, wo Sie Längen- und Breitengrad hat für NHS erhalten Organisationen? –

Antwort

1

Hier ist eine Antwort mit R. Zwei Strategien, die erste verwendet Basis-R-Funktion, die zweite Verwendung das Paket stringr. Beides verwendet 3 Schritte: i) entferne die ersten 7 Zeichen; ii) entferne die Muster, die wir nicht wollen, iii) trimm den verbleibenden Raum.

# a subset of your data.frame making your question reproducible 
df <- structure(list(Hosp = c("NXX - SCRIVENS LTD", "AGL - ADDITIONAL COMMUNITY MEDICAL SERVICES LTD", 
           "5M1 - SOUTH BIRMINGHAM PCT", "NQR - PRIMECARE PRIMARY CARE", 
           "RXT - BIRMINGHAM AND SOLIHULL MENTAL HEALTH NHS FOUNDATION TRUST", 
           "RRJ - THE ROYAL ORTHOPAEDIC HOSPITAL NHS FOUNDATION TRUST", 
           "RXK - SANDWELL AND WEST BIRMINGHAM HOSPITALS NHS TRUST")), 
       .Names = "Hosp", row.names = c(NA, -7L), class = "data.frame") 

> df$Hosp 
[1] "NXX - SCRIVENS LTD"            
[2] "AGL - ADDITIONAL COMMUNITY MEDICAL SERVICES LTD"     
[3] "5M1 - SOUTH BIRMINGHAM PCT"          
[4] "NQR - PRIMECARE PRIMARY CARE"          
[5] "RXT - BIRMINGHAM AND SOLIHULL MENTAL HEALTH NHS FOUNDATION TRUST" 
[6] "RRJ - THE ROYAL ORTHOPAEDIC HOSPITAL NHS FOUNDATION TRUST"  
[7] "RXK - SANDWELL AND WEST BIRMINGHAM HOSPITALS NHS TRUST" 

#base R functions ----------- 
gsub(" $", "", gsub("LTD|LIMITED|HQ|LLP|TRUST|FOUNDATION TRUST", "", substr(df$Hosp, 7, nchar(df$Hosp)))) 

# a function to do it 
nice_hospname <- function(x){ 
    gsub(" $", "", gsub("LTD|LIMITED|HQ|LLP|TRUST|FOUNDATION TRUST", "", substr(x, 7, nchar(x)))) 
} 
# you can use it with: 
nice_hospname(df$Hosp) 

# with stringr package -------- 
library(stringr) 
df$Hosp %>% str_sub(7) %>% str_replace("LTD|LIMITED|HQ|LLP|TRUST|FOUNDATION TRUST", "") %>% str_trim() 

[1] "SCRIVENS"         "ADDITIONAL COMMUNITY MEDICAL SERVICES"  
[3] "SOUTH BIRMINGHAM PCT"      "PRIMECARE PRIMARY CARE"      
[5] "BIRMINGHAM AND SOLIHULL MENTAL HEALTH NHS" "THE ROYAL ORTHOPAEDIC HOSPITAL NHS"   
[7] "SANDWELL AND WEST BIRMINGHAM HOSPITALS NHS" 

# a function to do it 
nice_hospname2 <- function(x){ 
    x %>% str_sub(7) %>% str_replace("LTD|LIMITED|HQ|LLP|TRUST|FOUNDATION TRUST", "") %>% str_trim() 
} 
# you can use it with: 
nice_hospname2(df$Hosp) 


library(stringr) 

Hoffe das hilft.

5

Hier eine ähnliche Strategie mit Stata. Seien Sie in der Zukunft rücksichtsvoll und verwenden Sie dataex, um Ihr Datenbeispiel zu generieren.

* Example generated by -dataex-. To install: ssc install dataex 
clear 
input str68 Hosp 
"RRK - UNIVERSITY HOSPITALS BIRMINGHAM NHS FOUNDATION TRUST"  
"RLU - BIRMINGHAM WOMEN'S NHS FOUNDATION TRUST"     
"5MX - HEART OF BIRMINGHAM TEACHING PCT"       
"NO0 - HEALTHHARMONIE LIMITED"          
"NLU - SK:N (LASERCARE CLINICS LTD)"        
"NXX - SCRIVENS LTD"            
"AGL - ADDITIONAL COMMUNITY MEDICAL SERVICES LTD"     
"5M1 - SOUTH BIRMINGHAM PCT"          
"NQR - PRIMECARE PRIMARY CARE"          
"RXT - BIRMINGHAM AND SOLIHULL MENTAL HEALTH NHS FOUNDATION TRUST" 
"RRJ - THE ROYAL ORTHOPAEDIC HOSPITAL NHS FOUNDATION TRUST"  
"RXK - SANDWELL AND WEST BIRMINGHAM HOSPITALS NHS TRUST"   
"RQ3 - BIRMINGHAM CHILDREN'S HOSPITAL NHS FOUNDATION TRUST"  
"RYW - BIRMINGHAM COMMUNITY HEALTHCARE NHS TRUST"     
"5PG - BIRMINGHAM EAST AND NORTH PCT"        
"NIT - SOUTH DOC SERVICES LIMITED HQ"        
"RR1 - HEART OF ENGLAND NHS FOUNDATION TRUST"      
"NIS - COVENTRY AND WARWICKSHIRE DIAGNOSTIC SERVICES LIMITED"  
"NDT - WEST MIDLANDS DIAGNOSTIC SERVICES LTD"      
"5PF - SANDWELL PCT"            
"TAJ - BLACK COUNTRY PARTNERSHIP NHS FOUNDATION TRUST"    
"NEP - TICCS ULTRASOUND LIMITED"         
"NL7 - ASSURA VERTIS URGENT CARE CENTRES (BIRMINGHAM)"    
"NNT - ASSURA KINGSTANDING"          
"5QW - SOLIHULL PCT"            
"NR9 - JOHN TAYLOR HOSPICE COMMUNITY INTEREST COMPANY"    
"RYK - DUDLEY AND WALSALL MENTAL HEALTH PARTNERSHIP NHS TRUST"  
end 

gen work = substr(Hosp, 7, .) 
replace work = ustrregexra(work, " *(LTD|LIMITED|HQ|LLP|TRUST|FOUNDATION TRUST)", "") 
leftalign // from SSC, to install, type: ssc install leftalign 
list 
+0

ustrregexra() ist nur in Stata 14 verfügbar. Wenn Sie mit einer früheren Version von Stata arbeiten, verwenden Sie stattdessen regexr(). – Aline

Verwandte Themen