这是数据:
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
答案 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