2015-12-10 55 views
0

我不知道如何做到這一點,我有一種感覺,我可以使用grepl()與此,但我不知道如何。在特定類型的模式匹配使用grepl()

我在我的數據集中有一列,裏面有「Abbot」,「Baron」,「William」和其他數百個名字以及許多空格/缺失值。

我想提取它的方式,第一個字母被提取並放在一個只包含字母的新列,如果它缺少一個值,然後填寫未知。

回答

0

下面我用快速的sapply聲明和strsplit來抓住第一個字母。有可能有更好的方法來做到這一點,但這裏有一個解決方案。 :)

test <- c('Abbot', 'Baron', 'William') 
firstLetter <- sapply(test, function(x){unlist(strsplit(x,''))[1]}) 
0

你怎麼對待

,如果是說那麼它缺少值未知

填?

使用substr的以下代碼應該非常快速且具有大量的行。如果test$name中的相應值爲NA,它總是返回第一個字母並返回NA

test <- data.frame(name = c('Abbot', 'Baron', 'William', NA)) 
test$first.letter <- substr(test$name, 1, 1) 

如果你想將所有NA轉換成test$first.letter'unknown'你以後可以做到這一點:

test$first.letter <- ifelse(is.na(test$first.letter), "unknown", test$first.letter)