首页 > 解决方案 > R:在我的数据框中添加一行,每列的中位数

问题描述

我想在我的数据框中添加一行,其中包含所有列的中位数。所以如果我们有这个数据集:

        GDP    GDP per capita
France   1      1   
Spain    1      1
Etiopia  3      3

我想添加一个名为“Medians”的行,因此数据框最终如下所示:

         GDP    GDP per capita
France   1      1   
Spain    1      1
Etiopia  3      3
Medians  1      1

我想我应该使用 rbind() 和 colMeans(),但我不确定我应该如何编码。

谢谢!

标签: rdataframe

解决方案


如果它是 a data.frame,则可以使用sapply

df1 <- rbind(df1, Medians = sapply(df1, median, na.rm = TRUE))
df1
#         GDP GDP per capita
#France    1              1
#Spain     1              1
#Etiopia   3              3
#Medians   1              1

如果是matrix,可以使用applywith MARGIN = 2(也可以使用 with data.frame

rbind(df1, Medians = apply(df1, 2, median, na.rm = TRUE))

数据

df1 <- structure(list(GDP = c(1L, 1L, 3L), `GDP per capita` = c(1L, 
1L, 3L)), class = "data.frame", row.names = c("France", "Spain", 
"Etiopia"))

推荐阅读