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



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

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

嗨!

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

# define data
x<- c("C","T","T","G","A","A","T","C","G")
y<- c("C","G","G","T","G","C","C","A","T")
v<- c("A","C","T","C","G","G","T","A","C")
z<- c("CTC","CCT","ATC","AC","T","CC","GC","AC","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_))

最新更新