同じパターン* .stage1の文字列が列に設定されています。すべての文字列を取得し、すべての文字列を別の列に箇条書きとしてコピーしたい。 ".stage1"をトリムアウトし、最初の列に ".stage1"の前のすべての文字を入力します。同じパターンの列内の文字列を切り取る
これは多くの時間を節約します。このスクリプトの作成に役立つパッケージを提案できますか?
おかげで、 マゴ
同じパターン* .stage1の文字列が列に設定されています。すべての文字列を取得し、すべての文字列を別の列に箇条書きとしてコピーしたい。 ".stage1"をトリムアウトし、最初の列に ".stage1"の前のすべての文字を入力します。同じパターンの列内の文字列を切り取る
これは多くの時間を節約します。このスクリプトの作成に役立つパッケージを提案できますか?
おかげで、 マゴ
列のコピーは問題ではありません。変更されたバージョンはsub
とすることができます。
## Some sample data
df = data.frame(x = paste0("A", 1:9, ".stage1"))
> df
x
1 A1.stage1
2 A2.stage1
3 A3.stage1
4 A4.stage1
5 A5.stage1
6 A6.stage1
7 A7.stage1
8 A8.stage1
9 A9.stage1
df$x2 = df$x
df$x = sub("(.*)\\.stage1", "\\1", df$x)
df
x x2
1 A1 A1.stage1
2 A2 A2.stage1
3 A3 A3.stage1
4 A4 A4.stage1
5 A5 A5.stage1
6 A6 A6.stage1
7 A7 A7.stage1
8 A8 A8.stage1
9 A9 A9.stage1
sub
ステートメントの詳細については、
sub
は、最初の式に一致するものすべてを2番目の式に置き換えます。その表現は何ですか?
最初の式: "(。*)。\\ステージ1"
。任意の文字に一致します。
。*は任意の数の文字に一致します。
。*はカッコ内にあるため、一致するものは\ 1という変数に格納されます。
"(。*)\\。stage1"は文字列 ".stage1"と\ 1の.stage1の前に文字を格納する前のすべてと一致します。
2番目の表現: "\\ 1"
置換文字列が "\\ 1"になるようにこれを前の文字で置き換えます。あなたはstringr
からstr_match
と直接それを行うことができます
:
library(stringr)
x <- paste0("A", 1:9, ".stage1") # sample data
str_match(x, "(.*)\\.stage")
[,1] [,2]
[1,] "A1.stage" "A1"
[2,] "A2.stage" "A2"
[3,] "A3.stage" "A3"
[4,] "A4.stage" "A4"
[5,] "A5.stage" "A5"
[6,] "A6.stage" "A6"
[7,] "A7.stage" "A7"
[8,] "A8.stage" "A8"
[9,] "A9.stage" "A9"
括弧内の値は、文字列の最初の部分をキャプチャ、あなたはstr_match
呼び出すときに、それが撮影して完全な文字列プラス列を返します値。
サンプルデータを提供できますか? – akash87