2014-12-29 36 views
-1

我的设计思想工作在猪脚本或R脚本猪产生二元变量R

问题产生的虚拟或二元变量: 输入猪脚本:任意的关系说,如下表

A B C 
    a1 b1 c1 
    a2 b2 c2 
    a1 b1 c3 

假设我们有基于B二进制的cols,C 输出应该

A B C B.b1 B.b2 C.c1 C.c2  C.c3 
    a1 b1 c1 1  0  1  0  0 
    a2 b2 c2 0  1  0  1  0 
    a1 b1 c3 1  0  0  0  1 

我觉得写UDF将是正确的做法。不过,我不确定如何定义udf的输出模式,因为列名是由用户提供的,我们不知道在关系中需要生成多少个不同的列。 有人请引导我作为一个高层次的设计来实现它。它是可行的R中做我们有这个统计问题

回答

1

一些在线解决方案,你可以尝试从library(splitstackshape)cSplit_eR

cSplit_e(cSplit_e(df, 'B', type='character', fill=0, 'binary'), 
      'C', type='character', fill=0, 'binary') 
# A B C B_b1 B_b2 C_c1 C_c2 C_c3 
#1 a1 b1 c1 1 0 1 0 0 
#2 a2 b2 c2 0 1 0 1 0 
#3 a1 b1 c3 1 0 0 0 1 
+0

是有可能做到这一点的猪也? – Sam

+0

@Sam我没有'猪'的经验。作为'R'标签在那里发布解决方案。 – akrun

+0

感谢@akrun ....而谷歌它似乎在我看来,R是最适合它的工作。在另一边只是想知道猪的方法这也 – Sam

1
DF <- read.table(text="A B C 
    a1 b1 c1 
    a2 b2 c2 
    a1 b1 c3", header = TRUE) 

do.call(cbind, list(DF, 
        model.matrix(~ 0 + B, data = DF), 
        model.matrix(~ 0 + C, data = DF))) 
# A B C Bb1 Bb2 Cc1 Cc2 Cc3 
#1 a1 b1 c1 1 0 1 0 0 
#2 a2 b2 c2 0 1 0 1 0 
#3 a1 b1 c3 1 0 0 0 1