我想基于两列的条件将新列添加到数据框。
我有以下数据:
Animal.1 <- c("A", "B", "C", "B", "A" )
Animal.2 <- c("B", "A", "A", "C", "C")
df <- data.frame(Animal.1, Animal.2)
如果满足以下条件:
Animal.1 = A和Animal.2 = B或Animal.1 = B和Animal.2 = A
我希望称为pair.code的新列等于1。
我希望每对动物id都使用不同的数字,但是如果在Animal.1和Animal.2或Animal.2和Animal.1中找到相同的动物id,则要使用相同的数字。
最终数据应如下所示:
Animal.1 <- c("A", "B", "C", "B", "A" )
Animal.2 <- c("B", "A", "A", "C", "C")
pair.code <- c("1", "1", "2", "3", "2")
df <- data.frame(Animal.1, Animal.2)
我们可以sort
先按行排列元素,然后使用以下命令创建“ pair.code”match
m1 <- t(apply(df, 1, sort))
v1 <- paste(m1[,1], m1[,2])
df$pair.code <- match(v1, unique(v1))
df$pair.code
#[1] 1 1 2 3 2
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句