希望这是一个相当直接的问题。我正在使用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也很缺乏经验。谢谢你的帮助。
答案 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-" ]