0

この質問はおそらく簡単な答えですので、事前にお詫び申し上げます。Rを使用してv2、df1の値を再コーディングし、v2、df2のデータ値のように見せたいと思います。たとえば「Y」を含むv2、df1の値の部分一致を使用してこれを行い、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
> 
4

3 に答える 3

5

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

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

于 2012-04-14T03:32:29.063 に答える
0

これでうまくいくと思いますが、グループの数とデータフレームのサイズによっては、より良い方法があるかもしれません。

df1$v2 <- ifelse(grepl("Y", df1$v2), "Yr", df1$v2)
于 2012-04-14T03:34:11.693 に答える
0

正規表現の別の使用法。

df1$v2 <- gsub("Y.*","Yr", df1$v2)
于 2012-04-14T13:19:22.687 に答える