子集遵循模式的值

时间:2017-03-31 20:20:05

标签: r regex

希望这是一个相当直接的问题。我正在使用R帮助对我正在使用的一些数据进行子集化。以下是我目前正在处理的一些数据的print()。我正在尝试根据subset()创建JobCode数据。正如您所看到的,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个值的占位符)用于JobCode的子集,以&#34; 15 - &#34;开头。有没有办法告诉子集寻找剩余的4个值?

我很抱歉格式不佳,因为我是StackOverflow的新手,而且我对R也很缺乏经验。谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

字符串相等中没有通配符。你需要使用一个功能。您可以使用substr()来提取前三个字符

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

另请注意,您不需要在data$参数中使用subset()。变量在该函数的数据框的上下文中被评估。

答案 1 :(得分:1)

您可以使用%like%库的data.table运算符:

library(data.table)

setDT(df)

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