这是数据:
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 的顺序可以是任意的,表示 [var1, var2] 的 [A, B] 与 [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
最佳答案
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
关于r - 从 r 中的现有变量创建新的变量类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11522189/