2012-04-14 5 views
0

この質問にはおそらく簡単な答えがあるので、事前にお詫び申し上げます。 Rを使ってv2、df1の値を再コード化し、それらをv2、df2のデータ値のように見せたいと思います。 v2、df1の値の部分一致を使用してこれを行うことは可能ですか?たとえば 'Y'を含み、それらの値をv2、df2のように 'Yr'に再コード化できますか?部分一致に基づく変数の再コード化

> df1 
    v1 v2 
1 1 Yr01 
2 2 Yr02 
3 3 Yr03 
4 4 Yr04 
5 5 Yr05 

> df2 
    v1 v2 
1 1 Yr 
2 2 Yr 
3 3 Yr 
4 4 Yr 
5 5 Yr 
> 

答えて

3

あなたは、あなたの正規表現として定義するものは何でもによってはブール値のベクトルを生成するためにgrepl()を使用することができます。正規表現に簡単にイントロの詳細についてはこちらをご覧ください:http://www.regular-expressions.info/tutorial.html

df1 <- read.table(text = " 
    v1 v2 
    1 1 Yr01 
    2 2 Yr02 
    3 3 Yr03 
    4 4 Yr04 
    5 5 Yr05", 
    header = TRUE, stringsAsFactors = FALSE) 

df1[grepl("Y", df1$v2), "v2"] <- "Yr" 
> df1 

    v1 v2 
1 1 Yr 
2 2 Yr 
3 3 Yr 
4 4 Yr 
5 5 Yr 

データが要因である場合は、最初の文字に変換することができ、その後、上記のコードを使用します。

+0

ご協力ありがとうございました。 – Mike

0

私はこれがあなたのために働くだろうと思いますが、あなたが持っているどのように多くのグループに応じて、より良い方法とデータフレームのサイズがあるかもしれません。

df1$v2 <- ifelse(grepl("Y", df1$v2), "Yr", df1$v2) 
+0

私の方法では文字に変換する必要はありませんが、Chase(インデックスを使用する)はおそらく高速です。 –

+0

助けてくれてありがとう。 – Mike

0

正規表現の別の用途。

df1$v2 <- gsub("Y.*","Yr", df1$v2) 
関連する問題