別の列内の文字列の一部に基づいて列を作成したいとします。データテーブル内で可変長の文字列を分割します
参照列は、一般的な形式は以下の:私はこの場合には単語「リン」を抽出するGB /リン12月31日
および様々な長さのものです。
私のアプローチは、これまでされています:
library(data.table)
d1 <- data.table(MENU_HINT =
c("GB/Ling 31st Dec", "GB/Taun 30th Dec",
"GB/Ayr 19th Dec", "GB/Ayr 9th Nov",
"GB/ChelmC 29th Sep"),
Track = c("Ling", "Taun", "Ayr", "Ayr", "ChelmC"))
#remove all the spaces
d1[, Track2 := gsub("[[:space:]]", "", MENU_HINT)]
# get the position of the first digit
d1[, x := as.numeric(regexpr("[[:digit:]]", Track2)[[1]])]
# get the position of the '/'
d1[, y := as.numeric(regexpr("/", Track2))[[1]]]
# use above to extract the Track
d1[, Track2 := substr(Track2, y + 1, x - 1)]
トラックは私が得ることを期待するものであるとトラック2は、私は上記の私のコードから得るものです。
これは長時間巻き込まれているようで、x値とy値が列全体で同じであるため動作していないようです。
可能性があり、パッケージ 'stringr'の' str_extract'機能に小さな再現性の例と予想される出力 – akrun
表情を見せてください。 – LAP
@akrun謝罪、小さな例が追加されました。 – MidnightDataGeek