r中的数据透视表,带二进制输出

时间:2016-09-27 04:30:12

标签: r

我有以下数据集

#output

id  a   b   c   d   e   Value
1   1   1   1   0   0   1
2   0   0   1   1   0   0
3   0   1   0   0   1   1

我希望从它们中创建一个数据透视表,并为该属性分配二进制值(如果它们存在则为1,否则为它们指定0)。我的理想输出如下:

Update [AnotherTable]
Set [AnotherTable].TessereCorso = MyTable.[J5F7NR]
From [AnotherTable]
Inner Join
(
    Select Distinct [J5BINB],[5BHNB],[J5BDCD]
    ,(Select Top 1 [J5F7NR] From MyTable) as [J5F7NR]
    ,[J5BHNB]
    From MyTable
)as MyTable
On  (MyTable.J5BINB = [AnotherTable].GKBINB) 
AND (MyTable.J5BHNB = [AnotherTable].GKBHNB) 
AND (MyTable.J5BDCD = [AnotherTable].GKBDCD) 

任何提示都非常感谢。

2 个答案:

答案 0 :(得分:1)

我们拆分了'属性'在','列中,使用mtabulateqdapTools的{​​{1}}获取第一列和第三列的频率。

cbind

答案 1 :(得分:1)

以基地R:

attributes <- sort(unique(unlist(strsplit(as.character(df$attributes), split=','))))
cols <- as.data.frame(matrix(rep(0, nrow(df)*length(attributes)), ncol=length(attributes)))
names(cols) <- attributes
df <- cbind.data.frame(df, cols)
df <- as.data.frame(t(apply(df, 1, function(x){attributes <- strsplit(x['attributes'], split=','); x[unlist(attributes)] <- 1;x})))[c('id', attributes, 'value')]
df
  id a b c d e value
1  1 1 1 1 0 0     1
2  2 0 0 1 1 0     0
3  3 0 1 0 0 1     1