根据列的比较输入标签

时间:2016-04-02 05:52:06

标签: r

我认为此问题之前没有问过这个问题。我在数据帧中有两列1和0。我们分别称这些列为X和Y.在对任何行的X和Y进行比较时,显然可能有四种组合之一:

  • A:1,0
  • B:0,1
  • C:1,1
  • D:0,0

想象一下,数据框总共有 m 列,但我们只对X和Y感兴趣。我想编写一个只比较X和Y的函数,然后用特征组合来表征特定的组合。新列中相应的标签A,B,C或D(我们称之为Z)。

所以说数据看起来像:

  • X Y
  • 1 1
  • 0 1
  • 0 0
  • 1 1

该功能将输出:

  • X Y Z
  • 1 1 C
  • 0 1 B
  • 0 0 D
  • 1 1 C

我想这可能是微不足道的,但我是R新手。谢谢你的指导!

1 个答案:

答案 0 :(得分:1)

我们创建一个键/值组合唯一数据集,然后merge创建基于'X'和'Y'列的输入数据集

 merge(df1, KeyDat, by = c("X", "Y"), all.x=TRUE)
 #  X Y Z
 #1 0 0 D
 #2 0 1 B
 #3 1 1 C
 #4 1 1 C

或者要以相同的顺序获取输出,请使用left_join

library(dplyr)
left_join(df1, keyDat)
#Joining by: c("X", "Y")
#  X Y Z
#1 1 1 C
#2 0 1 B
#3 0 0 D
#4 1 1 C

数据

keyDat <- data.frame(X= c(1, 0, 1, 0), Y = c(0, 1, 1, 
     0), Z = c("A", "B", "C", "D"), stringsAsFactors=FALSE)
df1 <- data.frame(X= c(1, 0, 0, 1), Y=c(1, 1, 0, 1))