2015-07-01 68 views
2

我有一個藥物名稱的數據框。每種藥物都有多種劑量。例如,我有:刪除以數字值開頭的字符串的最後一部分

x <- data.frame(c("DrugX 10 mg", "DrugX 20 mg", "DrugX 30mg", "DrugX 2% Cream", "DrugX 10% Gel", "DrugY 20 mg", "DrugY 30 mg")) 

x[,1] <- as.character(x[,1]) 

我想刪除給定數值後的所有內容。所以我想一個新的數據幀,看起來像這樣:

xnew <- data.frame(c("DrugX", "DrugX", "DrugX", "DrugX", "DrugX", "DrugY", "Drug Y")) 

在這一點上,我想採取「唯一」

xnew2 <- unique(xnew) 

,所以我的最終產品將是

xnew2 <- c("DrugX", "Drug Y") 

感謝您的幫助!

回答

2

您可以嘗試sub

v1 <- sub('\\s*\\d+.*$', '', x[,1]) 
v1 
#[1] "DrugX" "DrugX" "DrugX" "DrugX" "DrugX" "DrugY" "DrugY" 

unique(v1) 
#[1] "DrugX" "DrugY" 
1

手法高明的可能性:

unique(gsub(' .*','\\1',x[,1])) 
#[1] "DrugX" "DrugY" 
+0

爲什麼你需要'\\ 1'?我沒有找到任何捕獲組 – akrun

相關問題