比较三个分类列并用0,1或2表示结果

问题描述

如何比较其中一列的分类内容和其他三列的内容?例如,如果x的数据与y的数据相同,则用0表示,它与v的数据相同,用1表示,如果与z的数据相同,则用2表示。

x<- c(C,T,G,A,C,G)
y<- c(C,T)
v<- c(A,C)
z<- c(CTC,CCT,ATC,AC,CC,GC,CTAC)

解决方法

嗨,那里!

您可以使用dyplr及其case_when()参数来定义多个if语句:

# define data
x<- c("C","T","G","A","C","G")
y<- c("C","T")
v<- c("A","C")
z<- c("CTC","CCT","ATC","AC","CC","GC","CTAC")

dat <- data.frame(as.character(x),as.character(y),as.character(v),as.character(z))

# create new column considering your desired conditions
dat <- dat %>%
  mutate(new_column = case_when(x == y ~ 0,x == v ~ 1,x == z ~ 2,TRUE ~ NA_real_))