文字列を持つdata.tableがあり、その中に部分文字列を含む行のみを選択したい。 SQL WHERE x LIKE '%substring%'
と同等
例えば。
> Months = data.table(Name = month.name, Number = 1:12)
> Months["mb" %in% Name]
Empty data.table (0 rows) of 2 cols: Name,Number
Nameに「mb」が含まれる行のみを選択するにはどうすればよいですか?
_data.table
_にはlike
関数があります。
_Months[like(Name,"mb")]
Name Number
1: September 9
2: November 11
3: December 12
_
または、_%like%
_はより見栄えが良い:
_> Months[Name %like% "mb"]
Name Number
1: September 9
2: November 11
3: December 12
_
_%like%
_およびlike()
は、grepl
(整数位置を返す)ではなく、grep
(論理ベクトルを返す)を使用することに注意してください。そのため、他の論理条件と組み合わせることができます。
_> Months[Number<12 & Name %like% "mb"]
Name Number
1: September 9
2: November 11
_
また、(%または*ワイルドカードだけでなく)正規表現検索の機能も利用できます。
演算子_%in%
_は、値の別のセット、つまり"a" %in% c("a","b","c")
に値が存在するかどうかを見つけるために使用される部分的な文字列一致を行いません
部分的な文字列照合を行うには、grep()
関数を使用する必要があります。 grep
を使用して、_"mb"
_を含むすべての列のインデックスを返すことができます。次に、そのインデックスで行をサブセット化します
_Months[grep("mb", Name)] # data.table syntax slightly easier
_