、あなたはこれを行うことができます。
Time <- as.factor(c(
"8:10",
"8:15",
"8:30",
"8:45",
"10:10",
"10:15",
"10:45"
))
factor(sub("^10", "8", Time))
[1] 8:10 8:15 8:30 8:45 8:10 8:15 8:45
Levels: 8:10 8:15 8:30 8:45
をあなたの質問に答えるために:「私は追加する必要があります:?右、ない分、時間を交換します」 - いいえ、あなたはこれをする必要はありません。サブ引数の '^'は、正規表現内の文字列の開始を意味します。だからこれは時間を選択するだけです。
大規模なデータセットに対してこれをスケールアップする必要がある場合は、@ lmoのアドバイスを受けてより直接的なアプローチをとることができます。参照:
levels(Time) <- sub("^10", "8", Time)
時間の比較: `時間< - 因子(サブ( "^ 10"、 "8"、時間))`:ここ
require(microbenchmark)
microbenchmark(factor(sub("^10", "8", Time)),
levels(Time) <- sub("^10", "8", Time))
Unit: microseconds
expr min lq mean median
factor(sub("^10", "8", Time)) 56.254 57.9945 77.58347 58.6855
levels(Time) <- sub("^10", "8", Time) 27.932 28.9770 32.59209 30.4035
出典
2017-09-02 21:03:44
www
は一つの方法です。これは '10'で始まった以前のレベルを削除することに注意してください。 –
私は ':'を追加して分を置き換えるのではなく、時間を置き換えるべきでしょうか?ちょうど二重チェック。 – user2105555
いいえ、そのまま試してください。また、最初のコメントで言及したレベルを落としたくない場合は 'sub(。)'だけを使用し、 'factor'をその周りに囲まないでください。 –