gpt4 book ai didi

r - 根据摘要统计过滤掉 data.table 列

转载 作者:行者123 更新时间:2023-12-04 12:02:46 25 4
gpt4 key购买 nike

我经常需要从 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]

上面的方法很笨拙。是否有更优雅的方法从 data.table 中过滤掉列统计计算结果为 TRUE 的列?

最佳答案

这些工作:

dt[, .SD, .SDcols=unlist(mask)] 

dt[, .SD, .SDcols=which(unlist(mask))]

现在在一起:

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

data.table (1.12.9) 的当前开发版本中编辑,.SDcols 接受列的函数过滤器,因此这将起作用:

variance.filter = function(df) {
df[ , .SD, .SDcols = function(x) sd(x, na.rm = TRUE) > 1]
}

关于r - 根据摘要统计过滤掉 data.table 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22564364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com