【发布时间】:2026-01-06 04:00:01
【问题描述】:
考虑data.table,exampleDT,
set.seed(7)
exampleDT = data.table(colA = rnorm(10,15,5),
colB = runif(10,100,150),
targetA = rnorm(10,12,2),
targetB = rnorm(10,8,4))
如果我想计算列 targetA 中所有元素的平均值,例如,低于某个阈值(例如 10),我可以执行以下操作:
examp_threshold = 10
exampleDT[targetA<examp_threshold,mean(targetA)]
# [1] 9.224007566814299
如果我想计算列targetA 和targetB 中所有元素的平均值,例如,我可以执行以下操作:
target_cols = names(exampleDT)[which(names(exampleDT) %like% "target")]
exampleDT[,lapply(.SD,mean),.SDcols=target_cols]
# targetA targetB
# 1: 12.60101574551183 7.585007905896557
但我不知道如何将两者结合起来;也就是说,计算所有列中包含指定字符串(在本例中为“目标”)低于某个指定阈值(此处为 10)的所有元素的平均值。这是我的第一个猜测,但没有成功:
exampleDT[.SD<examp_threshold,lapply(.SD,mean),.SDcols=target_cols]
#Empty data.table (0 rows) of 2 cols: targetA,targetB
【问题讨论】:
标签: r data.table