私はこのような小さなデータフレームを持っている:R:列内の文字列を条件付きの列に置き換えるにはどうすればいいですか?
a<-c("green","green","green","green","green","green","green","green","green","green")
b<-c("blue","red","blue","red","blue","red","blue","red","blue","red")
df<-data.frame(a,b)
df
a b
1 green blue
2 green red
3 green blue
4 green red
5 green blue
6 green red
7 green blue
8 green red
9 green blue
10 green red
と私はdf[b=="red",]
することにより、これらの行を選択することができ
のb ==「赤」「黄」で「グリーン」を交換したいと思います置換は機能しません。私が試した:これの
> df[b=="red",]$a<-gsub("green","yellow",df[b=="red",])
Fehler in `$<-.data.frame`(`*tmp*`, "a", value = c("c(1, 1, 1, 1, 1)", :
replacement has 2 rows, data has 5
または
> df$a[subset(df$a,df$b=="red")]<-"yellow"
Warnmeldung:
In `[<-.factor`(`*tmp*`, subset(df$a, df$b == "red"), value = c(NA, :
invalid factor level, NA generated
> df
a b
1 <NA> blue
2 green red
3 green blue
4 green red
5 green blue
6 green red
7 green blue
8 green red
9 green blue
10 green red
と
> df[b=="red",]$a<-"yellow"
Warnmeldung:
In `[<-.factor`(`*tmp*`, iseq, value = c("yellow", "yellow", "yellow", :
invalid factor level, NA generated
> df
a b
1 green blue
2 <NA> red
3 green blue
4 <NA> red
5 green blue
6 <NA> red
7 green blue
8 <NA> red
9 green blue
10 <NA> red
なし私の問題のために正常に動作しません。最も簡単な解決策は何でしょうか?多くのありがとう、Treppenlift。
df < - data.frame(a、b、stringsAsFactors = FALSE);を試してください。 df [df $ b == 'red'、1] < - 'yellow' '。問題は 'R'は' data.frame'の呼び出しで 'stringsAsFactors = TRUE'をデフォルトで設定するということです。 – bouncyball
あなたはまた、2つの条件を持つ必要があります: 'df $ b ==" red "'と 'df $ a ==" green "'データ内にこのような場合を入れます –
@bouncyballこの解決策はうまくいきます。ありがとうございます – treppenlift