【问题标题】:Convert dummy variable to actual value将虚拟变量转换为实际值
【发布时间】:2015-10-07 15:41:41
【问题描述】:

我一直在研究以下列方式表示的数据集:

P1  P2  P3  P4  P5
0   2   1   0   1
0   1   0   0   0
0   0   0   3   0 
0   0   0   1   1
0   0   5   0   0
1   1   0   0   0

我正在尝试将其转换为 R 中虚拟变量不为 0 的行,例如:

P2,P3,P5
P2
P4
P4,P5
P3
P1,P2

我尝试了以下方法:Recoding dummy variable to ordered factor,但是,我没有收到多个项目。我很高兴生成一个没有任何列名的新事务表。我希望对生成的数据集进行购物篮分析。

谢谢

【问题讨论】:

  • 在这个例子中不是1的数字有什么意义吗?

标签: r market-basket-analysis dummy-variable


【解决方案1】:

你可以试试:

apply(df,1,function(x) toString(names(df)[as.logical(x)]))
#[1] "P2, P3, P5" "P2"         "P4"         "P4, P5"     "P3"         "P1, P2" 

数据:

df = structure(list(P1 = c(0L, 0L, 0L, 0L, 0L, 1L), P2 = c(2L, 1L, 
0L, 0L, 0L, 1L), P3 = c(1L, 0L, 0L, 0L, 5L, 0L), P4 = c(0L, 0L, 
3L, 1L, 0L, 0L), P5 = c(1L, 0L, 0L, 1L, 0L, 0L)), .Names = c("P1", 
"P2", "P3", "P4", "P5"), class = "data.frame", row.names = c(NA, 
-6L))   

【讨论】:

    【解决方案2】:

    或者

    A <- matrix(c(0,1,0,1,
                  2,0,0,3,
                  1,2,1,5), nrow=3, ncol=4)
    colnames(A) <- paste("P",1:4, sep = "")
    
    
    apply(A, 1, function(x) { names(x[which(x!=0)]) })
    

    输出一个列表:

    [[1]]
    [1] "P2" "P4"
    
    [[2]]
    [1] "P1" "P2" "P3" "P4"
    
    [[3]]
    [1] "P3" "P4"
    

    【讨论】:

      猜你喜欢
      • 2021-01-01
      • 2015-10-28
      • 1970-01-01
      • 1970-01-01
      • 2018-03-22
      • 1970-01-01
      • 1970-01-01
      • 2016-03-07
      • 1970-01-01
      相关资源
      最近更新 更多