我的目標是識別美國狀態,寫入包含其他文本的字符向量中,並將狀態轉換爲縮寫形式。例如,「北卡羅來納州」到「NC」。如果矢量只有長形式的名稱,這很簡單。但是,我的矢量在隨機的地方有其他文本,例如「states」。將使用其他文本嵌入的長狀態名轉換爲雙字母狀態縮寫
states <- c("Plano New Jersey", "NC", "xyz", "Alabama 02138", "Texas", "Town Iowa 99999")
從另一個帖子,我發現這一點:
state.abb[match(states, state.name)]
,但它僅轉換獨立德州
> state.abb[match(states, state.name)]
[1] NA NA NA NA "TX"
,而不是新澤西州,阿拉巴馬州和愛荷華州的字符串。
從Fast grep with a vectored pattern or match, to return list of all matches我想:
sapply(states, grep(pattern = state.name, x = states, value = TRUE))
但
Error in get(as.character(FUN), mode = "function", envir = envir) :
object 'Alabama 02138' of mode 'function' was not found
In addition: Warning message:
In grep(pattern = state.name, x = states, value = TRUE) :
argument 'pattern' has length > 1 and only the first element will be used
也不這項工作:
sapply(states, function(x) state.abb[grep(state.name, states)])
這個問題並沒有幫助: regular expression to convert state names to abbreviations
如何將嵌入式長名稱轉換爲州名縮寫?
編輯:我想返回矢量,唯一的變化就是縮短了州名的長名,例如「Plano New Jersey」變成「Plano NJ」。
感謝您糾正和/或教育我。
你可能會得到'NY,NY',再加上有些城鎮叫做'California'以及州。但是,這是挑剔的你。 – 2014-08-30 14:02:05
@Jonathan Leffler:是的,所謂的州稱爲職業危害。另外我有不止一個州的城市。嘆。爲什麼數據不能很好地表現? – lawyeR 2014-08-30 14:07:45
有一件名爲「真實世界」的東西,你應該訪問某個時間(「親愛的壺 - 你是黑色!簽名,壺」)。它與我們編寫程序的人設計的整潔計劃有着不同的習慣。 – 2014-08-30 14:16:42