【问题标题】:creating new variable category from existing variables in r从 r 中的现有变量创建新的变量类别
【发布时间】:2012-07-17 12:12:52
【问题描述】:

这是数据:

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

【问题讨论】:

    标签: r categories categorization


    【解决方案1】:
    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
    

    【讨论】:

    • 谢谢;我尝试通过 var3 进行 oder,但 mydata [, order (mydata$var3)] 不起作用...有没有办法输出为数字 1:n 级别而不是字符,只是为了方便下游分析
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 1970-01-01
    相关资源
    最近更新 更多