R:如何将具有条件的列中的字符串替换为第二列?
R: How do I replace strings in a column with condition to a second column?
我有一个像这样的小数据框:
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
我想用 "yellow" 替换 "green",其中 b=="red"
我可以 select 这些行 df[b=="red",]
但替换不起作用。我试过了:
> 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
None 对我的问题有效。最简单的解决方案是什么?非常感谢,Treppenlift。
您可以使用哪个功能。有关示例,请参阅 http://www.endmemo.com/program/R/which.php.
df[which(df[,2]=="red"),1] <- "yellow"
我有一个像这样的小数据框:
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
我想用 "yellow" 替换 "green",其中 b=="red"
我可以 select 这些行 df[b=="red",]
但替换不起作用。我试过了:
> 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
None 对我的问题有效。最简单的解决方案是什么?非常感谢,Treppenlift。
您可以使用哪个功能。有关示例,请参阅 http://www.endmemo.com/program/R/which.php.
df[which(df[,2]=="red"),1] <- "yellow"