R 根据值的计数计算中值

R 根据值的计数计算中值,r,median,R,Median,我有以下数据框: numbers Freq 1 4 2 2 5 1 3 23 2 4 34 2 当频率为1时,我知道如何计算r中的中位数(中位数(`numbers`,na.rm=TRUE)),但当频率与1不同时如何计算?我们可以使用创建逻辑索引=,使用它对“数字”列进行子集设置,并获得中位数 with(df1, median(numbers[Freq != 1], na.rm = TRUE)) #[1] 23

我有以下数据框:

   numbers Freq
1        4    2
2        5    1
3       23    2
4       34    2

当频率为1时,我知道如何计算r中的中位数(
中位数(`numbers`,na.rm=TRUE)
),但当频率与1不同时如何计算?

我们可以使用
创建逻辑索引=
,使用它对“数字”列进行子集设置,并获得中位数

with(df1, median(numbers[Freq != 1], na.rm = TRUE))
#[1] 23
数据

df1 <- structure(list(numbers = c(4L, 5L, 23L, 34L), Freq = c(2L, 1L, 
2L, 2L)), class = "data.frame", row.names = c("1", "2", "3", 
"4"))
> dput(df)
structure(list(numbers = c(4L, 5L, 23L, 34L), Freq = c(2L, 1L, 
2L, 2L)), class = "data.frame", row.names = c("1", "2", "3",
"4"))

df1我们可以使用
创建逻辑索引=
,使用它对“数字”列进行子集设置,并获得中位数

with(df1, median(numbers[Freq != 1], na.rm = TRUE))
#[1] 23
数据

df1 <- structure(list(numbers = c(4L, 5L, 23L, 34L), Freq = c(2L, 1L, 
2L, 2L)), class = "data.frame", row.names = c("1", "2", "3", 
"4"))
> dput(df)
structure(list(numbers = c(4L, 5L, 23L, 34L), Freq = c(2L, 1L, 
2L, 2L)), class = "data.frame", row.names = c("1", "2", "3",
"4"))

df1这里是另一个使用
tapply
subset

> with(subset(df,Freq != 1),tapply(numbers,Freq,median,na.rm = TRUE))
 2
23
数据

df1 <- structure(list(numbers = c(4L, 5L, 23L, 34L), Freq = c(2L, 1L, 
2L, 2L)), class = "data.frame", row.names = c("1", "2", "3", 
"4"))
> dput(df)
structure(list(numbers = c(4L, 5L, 23L, 34L), Freq = c(2L, 1L, 
2L, 2L)), class = "data.frame", row.names = c("1", "2", "3",
"4"))

这里是另一个使用
taply
subset

> with(subset(df,Freq != 1),tapply(numbers,Freq,median,na.rm = TRUE))
 2
23
数据

df1 <- structure(list(numbers = c(4L, 5L, 23L, 34L), Freq = c(2L, 1L, 
2L, 2L)), class = "data.frame", row.names = c("1", "2", "3", 
"4"))
> dput(df)
structure(list(numbers = c(4L, 5L, 23L, 34L), Freq = c(2L, 1L, 
2L, 2L)), class = "data.frame", row.names = c("1", "2", "3",
"4"))