I dati provengono da un'altra domanda stavo giocando intorno con:data.table e tavolo comportamento imprevisto
dt <- data.table(user=c(rep(3, 5), rep(4, 5)),
country=c(rep(1,4),rep(2,6)),
event=1:10, key="user")
# user country event
#1: 3 1 1
#2: 3 1 2
#3: 3 1 3
#4: 3 1 4
#5: 3 2 5
#6: 4 2 6
#7: 4 2 7
#8: 4 2 8
#9: 4 2 9
#10: 4 2 10
Ed ecco il comportamento sorprendente:
dt[user == 3, as.data.frame(table(country))]
# country Freq
#1 1 4
#2 2 1
dt[user == 4, as.data.frame(table(country))]
# country Freq
#1 2 5
dt[, as.data.frame(table(country)), by = user]
# user country Freq
#1: 3 1 4
#2: 3 2 1
#3: 4 1 5
# ^^^ - why is this 1 instead of 2?!
Grazie mnel e Victor K. Il naturale il follow-up è - non dovrebbe essere 2, cioè questo è un bug? Mi aspettavo
dt[, blah, by = user]
per tornare risultato identico a
rbind(dt[user == 3, blah], dt[user == 4, blah])
è questa aspettativa non è corretto?
Il paese è in as.data.frame (tabella (paese)) un fattore? Se è così, è perché i livelli non sono gli stessi in entrambi. – mnel
@mnel, mentre tu hai ragione nel fatto che è dovuto alla forzatura di 'as.data.frame' a' factor', il comportamento previsto sarebbe che il valore rappresentasse l'etichetta. Penso che questa sia probabilmente la stessa cosa che succede con 'rbindlist': http://stackoverflow.com/questions/15933846/rbindlist-two-data-tables-where-ha-fatt-factor-and-other-has- carattere-tipo-per/15935715 # 15935715 –
@eddi, vedere l'aggiornamento alla mia risposta. –