从R中的数据帧创建布尔数据帧

时间:2016-03-18 19:38:43

标签: r shiny

我有一个数据框,我想从中创建一个布尔数据帧。我想将原始数据框中每列的所有唯一值作为bolean数据框中的列名。要使用示例显示它:

mydata = 
sex   route
m    oral
f    oral
m    topical
f    unknown

然后,我想创建

    m  f   oral topical unknown
    1  0    1       0       0
    0  1    1       0       0
    1  0    0       1       0
    0  1    0       0       1

我正在使用下面的代码来创建bolean数据框。它适用于 R ,但不适用于闪亮。可能是什么问题?

col_names=c()

for(i in seq(1,ncol(mydata))){

 col_names=c(col_names,unique(mydata[i]))
 }


col_names= as.vector(unlist(col_names))

my_boolean= data.frame(matrix(0, nrow = nrow(mydata), ncol =      length(col_names)))

colnames( my_boolean)=col_names

for(i in seq(1,nrow(mydata))){
  for(j in seq(1,ncol(mydata)))
  {
    my_boolean[i,which(mydata[i,j]==colnames(my_boolean))]=1
  }}

1 个答案:

答案 0 :(得分:3)

有几种方法可以做到这一点,但我总觉得table最容易理解。这是table的方法:

do.call(cbind, lapply(mydf, function(x) table(1:nrow(mydf), x)))
##   f m oral topical unknown
## 1 0 1    1       0       0
## 2 1 0    1       0       0
## 3 0 1    0       1       0
## 4 1 0    0       0       1