2016-11-29 47 views
2

我有一個數據框和一個特定的列,我想剝去最後一個下劃線後的所有內容。在R的最後一個下劃線之後刪除所有內容

所以:

test <- data.frame(label=c('test_test_test', 'test_tom_cat', 'tset_eat_food', 'tisk - tisk'), 
        stuff=c('blah', 'blag', 'gah', 'nah') , 
        numbers=c(1,2,3, 4)) 

應該成爲

result <- data.frame(label=c('test_test', 'test_tom', 'tset_eat', 'tisk - tisk'), 
        stuff=c('blah', 'blag', 'gah', 'nah') , 
        numbers=c(1,2,3, 4)) 

我有:

require(dplyr) 
test %>% 
    mutate(label = gsub('_.*','',label)) 

但是,從第一個下劃線滴一切,給我

wrong_result <- data.frame(label=c('test', 'test', 'tset', 'tisk - tisk'), 
        stuff=c('blah', 'blag', 'gah', 'nah') , 
        numbers=c(1,2,3, 4)) 
+0

'測試%>%變異(標籤= GSUB('_ [^ _ ] * $','',label))' – alistaire

回答

3

我們可以使用sub,這可以無需任何外部包裝進行

test$label <- sub("_[^_]+$", "", test$label) 
test$label 
#[1] "test_test" "test_tom" "tset_eat" "tisk - tisk" 
1

這也將工作:

gsub('(.*)_\\w+', '\\1', test$label) 
#[1] "test_test" "test_tom" "tset_eat" "tisk - tisk" 
相關問題