如何使用 apply 函数在数据框中添加和重命名行

How to add and rename a row in a dataframe using the apply function

我是 R 编程的新手,从我之前创建的数据框中,我必须添加一个包含所有列的平均值的行,该行必须被称为 'Average'。应该注意的是,最后一列包含 NA 值。

到目前为止,我已经成功地为每一列和最后一列创建了新行,省略了 NA 值。我需要的是命名该行并将其放入 'Average',默认情况下它显示为 51,我不知道如何更改它,我已经阅读了函数 row.names () 等,但是我什么都出不来。

有人可以帮帮我吗?我将不胜感激

我把数据框留在这里 (state.df):

state.df = as.data.frame(state.x77)

这是我所做的:

apply = apply(state.df, MARGIN = 2, mean, na.rm = TRUE)
rbind(state.df,apply)

我也试过这个和其他一些东西,但它对我不起作用。

rbind(state.df,apply, rownames(state.df, prefix = 'Average'))

综上所述,通过apply我已经有了我基本想要的东西,我只是想把我做rbind时出现的名字51改成'Average'

rbind 仅为类似矩阵的参数从参数名称构造行名称。 applycolMeans return 都是 矩阵的向量。您可以使用 t 将此向量强制转换为矩阵,以便实际使用参数名称(在本例中为 Average)。

dd <- data.frame(x = rnorm(10L), y = c(NA, rnorm(9L)))

rbind(dd, Average = t(colMeans(dd, na.rm = TRUE)))
#                  x          y
# 1        0.4070128         NA
# 2        1.2352564  0.5730119
# 3       -0.5842432 -0.2096068
# 4        0.1695935 -1.0667109
# 5       -0.7393369 -1.5895364
# 6       -0.7394052 -1.0886582
# 7        0.9922455 -0.2560118
# 8       -3.0080877 -2.1085712
# 9       -0.3629210 -1.9192967
# 10      -0.5564323 -0.5459473
# Average -0.3186318 -0.9123697

rbind(dd, Average = colMeans(dd, na.rm = TRUE))
#             x          y
# 1   0.4070128         NA
# 2   1.2352564  0.5730119
# 3  -0.5842432 -0.2096068
# 4   0.1695935 -1.0667109
# 5  -0.7393369 -1.5895364
# 6  -0.7394052 -1.0886582
# 7   0.9922455 -0.2560118
# 8  -3.0080877 -2.1085712
# 9  -0.3629210 -1.9192967
# 10 -0.5564323 -0.5459473
# 11 -0.3186318 -0.9123697

当然,正如评论中指出的那样,您始终可以在事后使用 row.names<- 修改行名称。

您可以将 colMeans(dd, na.rm = TRUE) 替换为 apply(dd, 2L, mean, na.rm = TRUE) 并获得相同的结果,但 colMeans 更快。对于均值以外的操作,您可能需要 apply.