从r中的现有变量创建新的变量类别

时间:2012-07-17 12:12:52

标签: r categories categorization

这是数据:

var1 <- c("A", "B", "K", "L", "G", "M", "M")
var2  <- c("B", "A", "K", "L", "H", "M", "M")
mydata <- data.frame (var1, var2)
     var1 var2
1    A    B
2    B    A
3    K    K
4    L    L
5    G    H
6    M    M
7    M    M

我想创建新的类别变量,如果任何行的值相等,那么它们将属于同一类别。因此逐行比较(所有可能需要完成)。

例如mydata [1,]和mydata [2,]相等,因此它们在新变量类别中具有相同的值,即1。这是我打算做的一个重点。 var1,var2的顺序可以是任意,意味着[A,B]与[var1,var2]的[B,A]相同

对不起我无法解决的简单问题。

编辑: 预期产出

 var1 var2   caterory
1    A    B   1 
2    B    A   1
3    K    K   2
4    L    L   3
5    G    H   4
6    M    M   5
7    M    M   6

1 个答案:

答案 0 :(得分:2)

mydata$var3<-as.factor(apply(mydata,1,function(x){paste(x[order(x)],collapse='')}))

> mydata
  var1 var2 var3
1    A    B   AB
2    B    A   AB
3    K    K   KK
4    L    L   LL
5    G    H   GH
6    M    M   MM
7    M    M   MM

> str(mydata)
'data.frame':   7 obs. of  3 variables:
 $ var1: Factor w/ 6 levels "A","B","G","K",..: 1 2 4 5 3 6 6
 $ var2: Factor w/ 6 levels "A","B","H","K",..: 2 1 4 5 3 6 6
 $ var3: Factor w/ 5 levels "AB","GH","KK",..: 1 1 3 4 2 5 5