我已经阅读了很多类似的问题,但无法获得任何代码.我只想在我的数据框(df)的底部添加一行,其中列2:8的每列的最小值.下面是我的代码(可行)添加总行,但我想要一个最小行.
df[(nrow(df)+ 1),(2:8)] <- colSums(df[,2:8], na.rm=TRUE)
我试图让包matrixStats中的colMins工作,但不能出于某种原因.任何帮助,将不胜感激!
在基数R中,您可以使用sapply()
创建列最小值的原子向量,然后rbind()
将其附加到原始数据.我添加了NA
第一个值,因为我们需要将其添加到原始数据中.
rbind(df, c(NA, sapply(df[2:8], min, na.rm = TRUE)))
显然这只假设8列,因此df[-1]
可以用来代替df[2:8]
.
为了提高速度,我们可以使用vapply()
,sapply()
因为我们知道结果将是单个数值.
rbind(df, c(NA, vapply(df[-1], min, 1, na.rm = TRUE)))
更新:响应您对其他答案的评论 - 要获取"MIN"
第一列和其他所有答案中的最小值,我们可以调整对命名列表的调用,并一次完成所有操作.这样我们就不会混合列类(字符和数字),最终会在结果数据的列中出现意外的类.
rbind( df, c(setNames(list("MIN"), names(df)[1]), lapply(df[-1], min, na.rm = TRUE)) )