Die Daten aus einer anderen Frage kommen ich das Spiel mit:data.table und Tabelle unerwartetes Verhalten
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
Und hier ist das überraschende Verhalten:
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?!
Dank MNEL und Victor K. Die natürliche Follow-up ist - sollte es nicht 2 sein, dh ist das ein Fehler? Ich erwartete
dt[, blah, by = user]
identisches Ergebnis zu
rbind(dt[user == 3, blah], dt[user == 4, blah])
Ist diese Erwartung falsch zurück?
Ist Land in as.data.frame (Tabelle (Land)) ein Faktor? Wenn das so ist, dann deshalb, weil die Ebenen in beiden nicht gleich sind. – mnel
@ mnel, während Sie richtig sind, dass es 'as.data.frame' ist, das auf' Faktor' gezwungen wird, wäre das erwartete Verhalten, dass der Wert das Label darstellt. Ich denke, das ist wahrscheinlich dasselbe wie bei 'rbindlist': http://stackoverflow.com/questions/15933846/rindlist-two-data-tables-where-one-has-factor-and-other-has- zeichen-type-for/15935715 # 15935715 –
@eddi, siehe Update zu meiner Antwort. –