首页 > 解决方案 > 是否有一行代码可以添加到函数中以删除 = 0 的所有结果

问题描述

在平均值或中位数的函数中可以添加一行代码,将摆脱那些 = 0

功能示例:df <- iris setNames(apply(sepal.length, 1, median, na.rm = TRUE), df[[1]])

标签: r

解决方案


以下将计算数据帧每一行中所有非零和非 na 值的中值。

df <- iris 
apply(df, 1, FUN = function(x){
  values_to_calculate <- x[which(!x == 0)]
  return(median(values_to_calculate, na.rm = T))
})

apply 函数需要三个参数,在此处查看文档:https ://www.rdocumentation.org/packages/base/versions/3.6.2/topics/apply

  • Matrix/Vector/Dataframe:在此示例中,包含 iris 数据集的 df
  • 边距:在本例中,边距设置为 1,这意味着应用程序将遍历每一行。要遍历每一列,请将 1 更改为 2,或者对于每个单元格,将 1 更改为 c(1,2)
  • 在边距上应用的函数:在这种情况下,我们正在创建一个自定义函数并将每一行传递给变量 x 下的这个自定义函数。然后,我们将从行中删除所有非零值,最后返回中位数

注意:我通常不建议从中位数计算中删除 0,除非首先在数据集中出现 0 的原因是众所周知的


推荐阅读