gpt4 book ai didi

r - 如何使用 data.table 有效地计算行中位数

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

这个问题在这里已经有了答案:





data.table row-wise sum, mean, min, max like dplyr?

(5 个回答)


3年前关闭。




我有一个相当大的 data.table(15M 行,15 列),我想计算每行的中位数。我可以使用

apply(DT, 1, median)  # DT is my data.table

但这很慢。有没有更快的、对 data.table 友好的替代方案?

作为一个小的工作示例,如果我有
DT = data.table(a = c(1, 2, 4), b = c(6, 4, 7), 
c = c(3, 9, 9), d = c(18, 1, -5))
# a b c d
# 1: 1 6 3 18
# 2: 2 4 9 1
# 3: 4 7 9 -5

计算行中位数的最有效方法是什么?
apply(DT, 1, median)
# [1] 4.5 3.0 5.5

最佳答案

一个选项是使用 rowMedians -功能来自 包裹:

library(matrixStats)
DT[, med := rowMedians(as.matrix(.SD))][]
这使:
> DT
a b c d med
1: 1 6 3 18 4.5
2: 2 4 9 1 3.0
3: 4 7 9 -5 5.5

或者只有 data.table :
DT[, med := melt(DT, measure.vars = names(DT))[, r := 1:.N, variable][, median(value), by = r]$V1][]

关于r - 如何使用 data.table 有效地计算行中位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48885416/

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