我有一个数据框,我想从中创建一个布尔数据帧。我想将原始数据框中每列的所有唯一值作为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
}}
答案 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