gpt4 book ai didi

r - 从 R 中的 data.table 列计算中位数

转载 作者:行者123 更新时间:2023-12-03 21:08:55 24 4
gpt4 key购买 nike

我正在尝试计算多列的中值,但是我的数据有点古怪。它看起来像下面的例子。

library(data.table)

dt <- data.table("ID" = c(1,2,3,4),"none" = c(0,5,5,3),
"ten" = c(3,2,5,4),"twenty" = c(0,2,3,1))


ID none ten twenty
1: 1 0 3 0
2: 2 5 2 2
3: 3 5 5 3
4: 4 3 4 1

表中的 to 列表示该值的出现次数。我想计算出现的中位数。

例如对于 ID = 1
median(c(10, 10, 10))

是我想要创建的计算。

对于 ID = 2
median(c(0, 0, 0, 0, 0, 10, 10, 20, 20))

我试过使用 rep()lapply()成功非常有限,并且正在就如何实现这一目标进行一些明确的指导。我理解 rep() 之类的我将不得不硬编码要重复的值(例如 rep(0,2)rep(10,2) ),这就是我所期望的。我只是在努力创建一个包含每列重复的列表或向量。

最佳答案

这是另一个 data.table方式(假设唯一 ID ):

dt[, median(rep(c(0, 10, 20), c(none, ten, twenty))), by=ID]
# ID V1
# 1: 1 10
# 2: 2 0
# 3: 3 10
# 4: 4 10

这只是试图在不 reshape 的情况下获得@eddi 的答案(我倾向于将其用作最后的手段)。

关于r - 从 R 中的 data.table 列计算中位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37579357/

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