当前位置:  开发笔记 > 编程语言 > 正文

在R中添加Min Row

如何解决《在R中添加MinRow》经验,为你挑选了1个好方法。

我已经阅读了很多类似的问题,但无法获得任何代码.我只想在我的数据框(df)的底部添加一行,其中列2:8的每列的最小值.下面是我的代码(可行)添加总行,但我想要一个最小行.

df[(nrow(df)+ 1),(2:8)] <- colSums(df[,2:8], na.rm=TRUE)

我试图让包matrixStats中的colMins工作,但不能出于某种原因.任何帮助,将不胜感激!



1> Rich Scriven..:

在基数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))
)

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有