मैं एक बड़ी सांख्यिक डेटासेट के साथ का मतलब है (~ 700 पंक्तियाँ, 350,000 कॉलम, आर में एक data.table के रूप में पढ़ने) युक्त कुछ एनए के कि मैं स्तंभ के साथ प्रतिस्थापित करना चाहते हैं के रूप में जल्दी का मतलब यथासंभव। मुझे पिछली पोस्ट मिली जो 0 के साथ एनए की जगह लेती है, लेकिन जब मैं इनपुट कॉलम का मतलब समाधान को संशोधित करता हूं, तो मुझे जे, कॉलम नंबर मिलता है। ऐसा लगता है कि मुझे कुछ स्पष्ट याद आना चाहिए ... कॉलम की गणना करने के तरीके पर कोई सुझाव इस विधि का उपयोग करना है?तरह से बड़े डेटा
Fastest way to replace NAs in a large data.table
#original code
f_dowle3 = function(DT) {
for(j in seq_len(ncol((DT)))
set(DT,which(is.na(DT[[j]])),j,0)
}
#modified code
impute = function(DT) {
for(j in 2:ncol(DT))
set(DT,which(is.na(DT[[j]])),j,mean(DT[,j],na.rm = TRUE))
}
test_impute = fread("test_impute.csv")
test_impute
ID snp1 snp2 snp3 snp4
1: 1 2 1 1 0
2: 2 2 2 0 0
3: 3 2 NA 0 NA
4: 4 2 1 2 0
5: 5 2 NA 2 0
6: 6 2 1 1 0
7: 7 1 1 NA 0
8: 8 NA 1 0 0
9: 9 2 2 2 NA
10: 10 1 1 0 0
impute(test_impute)
test_impute
ID snp1 snp2 snp3 snp4
1: 1 2 1 1 0
2: 2 2 2 0 0
3: 3 2 3 0 5
4: 4 2 1 2 0
5: 5 2 3 2 0
6: 6 2 1 1 0
7: 7 1 1 4 0
8: 8 2 1 0 0
9: 9 2 2 2 5
10: 10 1 1 0 0
आपको बहुत बहुत धन्यवाद !! यह तय है और इन दोनों विधियों का काम! मैं बाद वाले का उपयोग करूंगा क्योंकि यह एक तेज़ विकल्प हो सकता है। – bdarst
Fyi आपके उत्तर का पहला भाग है, एक विकल्प को टॉगल करने के बाद बेकार में, व्यवहार बदल दिया जा सकता है। 1.9.7 के लिए खबरों में आइटम 3 देखें: https://github.com/Rdatatable/data.table/blob/master/NEWS.md तो मैं 'विकल्प (datatable.WhenJisSymbolThenCallingScope = TRUE) कर सकते हैं; डीटी [, 1] 'पहले कॉल के लिए सबसेट करने के लिए। – Frank
वाह, यह विकल्प विकल्प का नरक है। मुझे पता है कि यह वास्तव में क्या करता है। – Gregor