簡體   English   中英

使用Tidyverse根據另一個數據框列中的值有條件地替換數據框列中的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM