Ich habe einen Datenrahmen und ich möchte einen booleschen Datenrahmen daraus erstellen. Ich möchte alle eindeutigen Werte jeder Spalte im ursprünglichen Datenrahmen als Spaltennamen im booleschen Datenrahmen machen. Um zu zeigen, es an ein Beispiel:Erstellen eines booleschen Datenrahmens aus einem Datenrahmen in R
mydata =
sex route
m oral
f oral
m topical
f unknown
Dann will ich schaffen
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
ich den Code verwenden unter dem bolean Datenrahmen zu erstellen. Es funktioniert in R aber nicht in glänzend. Was könnte das Problem sein?
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
}}
Versuchen model.matrix mit: 'model.matrix (~ sex + Route - 1, mydata)' es ist sauberer – Raad
Ich bin mit @NBATrends jedoch 'model.matrix (~ sex + route - 1, meine Daten) 'gibt Ihnen nicht das richtige Ergebnis, da eine der Kategorien als Basis verwendet wird. Um das zu beheben, können Sie 'cbind (modell.matrix (~ sex - 1, mydata), modell.matrix (~ route - 1, mydata))'. – Bayesric
Sie müssen erklären, was nicht funktioniert in glänzend, um Hilfe mit diesem Teil Ihrer Frage zu bekommen. – A5C1D2H2I1M1N2O1R2T1