2016-07-19 5 views
0

Ich habe eine data.table mit 2 Säulen-ID und X, wobei X kategorische Werte enthält (a, b, c)R data.table - kategorische Werte in einer Spalte in Binärwerte in mehreren Spalten

ID X 
1 a 
2 c 
3 b 
4 c 

ich möchte X in 3 binären Spalten verwandeln, wo die Spaltennamen a sind, b und c

ID a b c 
1 1 0 0 
2 0 0 1 
3 0 1 0 
4 0 0 1 

Was wird ein guter Weg, dies zu tun? Vielen Dank!

+2

See '? Table' (' Tabelle (Daten) ') und wahrscheinlich [diese] (http : //stackoverflow.com/questions/7442207/congengency-table-with-r) könnte helfen –

Antwort

0

Hier ist eine Option von dplyr/tidyr

library(dplyr) 
library(tidyr) 
df1 %>% 
    mutate(V1 = 1) %>% 
    spread(X, V1, fill= 0) 
# ID a b c 
#1 1 1 0 0 
#2 2 0 0 1 
#3 3 0 1 0 
#4 4 0 0 1 
2

Mit dcast von data.table,

dcast(dt, ID ~ X, value.var = 'X', fun = length) 
# ID a b c 
#1: 1 1 0 0 
#2: 2 0 0 1 
#3: 3 0 1 0 
#4: 4 0 0 1 
+1

danke! arbeite wie ein Charme! – qwertyl