Dane pochodzą z innym pytaniem byłem zabawy z:data.table i stół nieoczekiwane zachowanie
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
A oto zaskakujące zachowanie:
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?!
Dzięki mnel i Victor K. Naturalna kontynuacja jest - czy nie powinna być 2, czyli czy jest to błąd? Spodziewałem
dt[, blah, by = user]
wrócić identyczny wynik
rbind(dt[user == 3, blah], dt[user == 4, blah])
Czy to oczekiwanie błędne?
Czy kraj w as.data.frame (tabela (kraj)) jest czynnikiem? Jeśli tak, to dlatego, że poziomy nie są takie same w obu. – mnel
@mnel, podczas gdy masz rację, ponieważ wynika to z "as.data.frame", zmuszając do "factor", oczekiwane zachowanie byłoby dla wartości reprezentującej etykietę. Myślę, że jest to prawdopodobnie to samo, co w przypadku 'rbindlist': http://stackoverflow.com/questions/15933846/rbindlist-two-data-tables-where-one-has-factor-and-other-has- character-type-for/15935715 # 15935715 –
@eddi, patrz aktualizacja do mojej odpowiedzi. –