डेटा एक और सवाल मैं चारों ओर के साथ खेल रहा था से आता है: प्राकृतिकdata.table और टेबल अनपेक्षित व्यवहार
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?!
धन्यवाद mnel और विक्टर लालकृष्ण:
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
और यहाँ आश्चर्य की बात व्यवहार है अनुवर्ती है - यह 2 नहीं होना चाहिए, यानी यह एक बग है? मैं
dt[, blah, by = user]
उम्मीद
rbind(dt[user == 3, blah], dt[user == 4, blah])
के समान परिणाम वापस जाने के लिए है कि उम्मीद से गलत है?
देश as.data.frame (तालिका (देश)) में एक कारक है? यदि ऐसा है तो ऐसा इसलिए है क्योंकि दोनों स्तरों में स्तर समान नहीं हैं। – mnel
@mnel, जबकि आप सही हैं, तो 'as.data.frame' को 'कारक' के लिए coercing के कारण, अपेक्षित व्यवहार लेबल का प्रतिनिधित्व करने के लिए मूल्य के लिए होगा। मुझे लगता है कि शायद यह वही बात है जो 'rbindlist' के साथ चल रही है: http://stackoverflow.com/questions/15933846/rbindlist-two-data-tables-where-one-has-factor-and-other-has- चरित्र-प्रकार-के लिए/15 9 35715 # 15935715 –
@eddi, मेरे उत्तर में अपडेट देखें। –