计算数据框中多列的中位数
Calculate medians of multiple columns in a data frame
我想计算下面我的 df
数据库的中位数。
在这种情况下,我想获得 A1 到 A10 列的中位数结果,并 return 分别获得这些列的结果。
谢谢!
#database
df <- structure(
list(D1 = c("a","a","b","b","b"),
D2 = c("c","d","c","d","c"), D3 = c("X","X","Y","Z","Z"), A1=c(1,2,3,4,5),A2=c(4,2,3,4,4), A3=c(1,2,3,4,6),
A4=c(1,9,4,4,6),A5=c(1,4,3,9,6),A6=c(1,2,4,4,8),A7=c(1,1,3,4,7),A8=c(1,6,4,4,2),A9=c(1,2,3,4,6),A10=c(1,5,3,2,7)),
class = "data.frame", row.names = c(NA, -5L))
我们可以遍历 numeric
列并得到 median
library(dplyr)
df %>%
summarise(across(where(is.numeric), median))
A1 A2 A3 A4 A5 A6 A7 A8 A9 A10
1 3 4 3 4 4 4 3 4 3 3
或使用 matrixStats
中的 colMedians
library(matrixStats)
colMedians(as.matrix(df[startsWith(names(df), "A")]))
[1] 3 4 3 4 4 4 3 4 3 3
或在base R
sapply(df[startsWith(names(df), "A")], median)
A1 A2 A3 A4 A5 A6 A7 A8 A9 A10
3 4 3 4 4 4 3 4 3 3
如果您想保持简单:
apply(df[, 4:13], 2, median)
A1 A2 A3 A4 A5 A6 A7 A8 A9 A10
3 4 3 4 4 4 3 4 3 3
我想计算下面我的 df
数据库的中位数。
在这种情况下,我想获得 A1 到 A10 列的中位数结果,并 return 分别获得这些列的结果。
谢谢!
#database
df <- structure(
list(D1 = c("a","a","b","b","b"),
D2 = c("c","d","c","d","c"), D3 = c("X","X","Y","Z","Z"), A1=c(1,2,3,4,5),A2=c(4,2,3,4,4), A3=c(1,2,3,4,6),
A4=c(1,9,4,4,6),A5=c(1,4,3,9,6),A6=c(1,2,4,4,8),A7=c(1,1,3,4,7),A8=c(1,6,4,4,2),A9=c(1,2,3,4,6),A10=c(1,5,3,2,7)),
class = "data.frame", row.names = c(NA, -5L))
我们可以遍历 numeric
列并得到 median
library(dplyr)
df %>%
summarise(across(where(is.numeric), median))
A1 A2 A3 A4 A5 A6 A7 A8 A9 A10
1 3 4 3 4 4 4 3 4 3 3
或使用 matrixStats
colMedians
library(matrixStats)
colMedians(as.matrix(df[startsWith(names(df), "A")]))
[1] 3 4 3 4 4 4 3 4 3 3
或在base R
sapply(df[startsWith(names(df), "A")], median)
A1 A2 A3 A4 A5 A6 A7 A8 A9 A10
3 4 3 4 4 4 3 4 3 3
如果您想保持简单:
apply(df[, 4:13], 2, median)
A1 A2 A3 A4 A5 A6 A7 A8 A9 A10
3 4 3 4 4 4 3 4 3 3