![](/img/trans.png)
[英]Conditionally replace column names in a dataframe based on values in another dataframe
[英]Conditionally Replacing Values in a Dataframe Column Based on Values in Another Dataframe Column Using Tidyverse
library(tidyverse)
Column1<-c("Course1","Course1","Course1","Course2","Course2","Course3","Course3","Course3"," Course4","Course4","Course5","Course5")
Column2<-c("Cat","Dog","Snake","Elephant","Beaver","Rabbit","Fish","Bird","Bear","Horse","Raccoon","Skunk")
Df1<-data.frame(Column1,Column2)
使用上面的示例数据,我想基于“ Column2”的值有条件地替换/重新编码“ Column1”的值。
对于此简单示例,如果“ Column2”包含“ Cat”或“ Dog”,则应将“ Column1”值替换为“ Course6”。
到目前为止,我已经尝试了下面的代码。 它不起作用,但是我感觉我已经接近了。 我也希望使用tidyverse解决方案。
map2(Df1[2],Df1[1],~if_else(.x =="Cat"|"Dog", replace(.y, "Course6")))
map2(Df1[2],Df1[1],~if_else(.x =="Cat"|"Dog", replace(.y, .x,"Course6")))
帮助将不胜感激。
不知道我是否正确,但是也许对您有用:
df1[df1$Column2 == c("Cat", "Dog"), 1] <- "Course6"
创建数据stringsAsFactors
必须关闭stringsAsFactors
或提供完整的因素列表。
编辑
tidyverse
:
df1 %>%
spread(key = Column2, value = Column1) %>%
mutate("Dog" = "Course6") %>%
gather(key = "Column1", value = "Column2")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.