2

一部の列に特定のコンテンツがある場合、Rデータフレームの1つの列を変更しようとしています(ただし、正確なコンテンツではなく、正規表現で見つけたコンテンツ)。

例えば:

 df:
 Name        City            Age
 Peter       Fort Wayne      15
 John        South Bend      20
 Christopher Boston          25
 Andy        Boston          30
 Johnathan   Los Angeles     35

さて、名前がJohnで始まるすべての人の年齢を変更したい場合は、通常、次のように選択します。

 subset(df, grepl("^John", Name))

それは私に与えるだろう

 Name        City            Age
 John        South Bend      20
 Johnathan   Los Angeles     35

しかし、どうやら私はそれを使用して変更することはできません

 subset(df, grepl("^John", Name))$Age <- 20

これを行う簡単な方法はありますか?データフレームから行を削除してから再挿入するのは嫌です。これは、これまで行ってきたことです。

助けてくれてありがとう、オリバー

4

1 に答える 1

6

試す:

 df$Age[grepl("^John", df$Name)] <- 20

subsetは a を返し、全体data.frameに割り当てることはできません。代わりに、上記のように列ごとにインデックスを付けます。20data.frame

于 2013-02-21T15:21:19.523 に答える