/ / सारांश आँकड़ों के आधार पर data.table कॉलम फ़िल्टर करें - r, data.table

सारांश आंकड़ों के आधार पर डेटा.table कॉलम फ़िल्टर करें - r, data.table

मुझे अक्सर data.table से कम विचरण वाले कॉलमों को फ़िल्टर करने की आवश्यकता होती है। स्तंभ नाम पहले से ज्ञात नहीं हैं।

dt = data.table(mtcars)

# calculate standard deviation with arbitrary max value of 1:
mask = dt[,lapply(.SD, function(x) sd(x, na.rm = TRUE) > 1)]

# The columns with the FALSE values in row 1 need to be removed
mask.t = t(mask)
mask.t = which(mask.t)
dt[,mask.t,with=FALSE]

ऊपर दृष्टिकोण क्लंकी है। क्या किसी डेटा से बाहर कॉलम को फ़िल्टर करने का एक और अधिक सुरुचिपूर्ण तरीका है। जिसके लिए कॉलम सांख्यिकीय TRUE का मूल्यांकन करता है?

उत्तर:

उत्तर № 1 के लिए 1

ये काम:

dt[, names(mask)[unlist(mask)], with=FALSE]

dt[, names(which(unlist(mask))), with=FALSE]

अब सब एक साथ:

variance.filter = function(df) {
mask = df[,lapply(.SD, function(x) sd(x,na.rm = TRUE) > 1)]
df = df[, names(mask)[unlist(mask)], with=FALSE]
}