首页 > 解决方案 > 计算 data.frame 列的中位数

问题描述

我有以下data.frame,我想确定索引的中值。例如,让我们考虑下面的 data.farme。

 index t1 t2 t3 t4
   10  1  4  7 10
   20  2  5  8 11
   30  3  6  9  0
   40  0  0  0  0 

first step,我想按列相加data.frame.

index t
10    22
20    26
30    18
40    0

second step我想确定索引的中位数。在这样做时,我需要按递增顺序排列 t 并选择中位数。

index t
40    0
30    18
10    22
20    26

我知道 R 中有一个中值函数,但我收到不同的结果。

样本数据:

df<-structure(list(index=c (10,20,30,40), 
                   t1 = c(1, 2, 3, 0), 
                   t2 = c(4, 5, 6, 0), 
                   t3 = c(7, 8,9,  0),
                   t4 = c(10, 11, 0, 0)), row.names = c(NA,4L), class = "data.frame")
                                                            
df

标签: rdataframe

解决方案


我会试试这个:

library(data.table)
df <- setDT(df)
df_c <- df[,t:=t1+t2+t3+t4][, .(index, t)]
setorder(df_c, index)
median(df_c$index)

对于中位数,我实际上会使用一个函数并应用于索引列。


推荐阅读