2017-03-31 66 views
0

希望這是一個相當直接的問題。我正在使用R來幫助我處理一些數據的子集。以下是我目前使用的一些數據的print()。我正在嘗試創建基於JobCodesubset()數據。正如您所看到的,JobCode遵循一種模式(00 - 0000),其中前兩個數字對於特定行業而言是相同的。圍繞值的子集

  ID State   StateName JobCode 
      1 AL   Alabama 51-9199 
      2 AL   Alabama 27-3011 
      4 AL   Alabama 49-9043 
      5 AL   Alabama 49-2097 

我現在嘗試使用此test <- subset(data, data$State == "AL" & data$JobCode == ("15-####"))(其中#是剩下的4個值的佔位符)以子集與「15-20」開頭JOBCODE。有什麼方法可以告訴子集尋找剩餘的4個值嗎?

對於糟糕的格式化,我很抱歉,因爲我是StackOverflow的新手,對R也很缺乏經驗。感謝您的幫助。

+1

對於文本模式,正則表達式可以處理它(無論使用R或其他任何東西)。在R的文檔的控制檯輸入'?regex'。或者,如果啓動始終爲固定寬度,則可以查看'?substring'。 – Frank

+1

@Frank謝謝你指點我的'?regex',它非常有助於我對這個主題的瞭解。我仍然在學習R.的所有語法細節。 – pc8807

回答

1

字符串相等中沒有通配符。你需要使用一個功能。你可以使用substr()提取前三charcters

test <- subset(data, State == "AL" & substr(JobCode,1,3) == ("15-")) 

還要注意的是,你不需要使用data$subset()參數中。變量在該函數的數據框的上下文中被忽略。

+0

太好了,非常感謝你@MrFlick。這工作。你也可以分享關於'data $'的標註。 – pc8807

1

可以使用data.table庫的%like%操作:

library(data.table) 

setDT(df) 

df[ State == "AL" & JobCode %like% "15-" ]