r - 是否有一行代码可以添加到函数中以删除 = 0 的所有结果
问题描述
在平均值或中位数的函数中可以添加一行代码,将摆脱那些 = 0
功能示例:df <- iris
setNames(apply(sepal.length, 1, median, na.rm = TRUE), df[[1]])
解决方案
以下将计算数据帧每一行中所有非零和非 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 的原因是众所周知的
推荐阅读
- python - 将键为字符串、值为列表的字典转换为 pandas DataFrame
- bash - 如何使 Oracle sqlplus 命令行实用程序非交互式?
- apache-kafka - Kafka 连接中的 ACL 配置不起作用
- python - 创建两个新列,其中第二个是剩余的
- python - 加载 MySQLdb 模块时出错 - Windows 上的 Python 3.7
- python - 删除 CSV 文件中的索引列
- java - 使用Java中的Jackson将具有不同类型值的映射序列化为JSON
- ios - SwiftUI iOS 14 中 DatePicker 的居中对齐
- c++ - 如何在使用 setup.py 构建期间查看 g++ 编译标志?
- flutter - firebase auth - 重复类:io.flutter.plugins.GeneratedPluginRegistrant