【发布时间】:2023-04-02 21:58:01
【问题描述】:
我想创建一个函数来计算一些可以应用于任何数据集的预先确定的汇总统计量度。我将从这里的示例开始,但这是针对可能具有多种数据类型的数据集 - 例如字符、因子、数字、日期、包含空值等。
如果数据都是数字,我可以很容易地做到这一点 - 但是处理带有 apply、sapply 等的 IF 场景是我遇到语法问题的地方。 当它全部是数字时,我很好,因为我可以做 new_df = data.frame(min = sapply(mydf, 2,min).....etc....etc)。当语法更复杂时,我只是无法正确理解语法,如下面的示例所示。
在下面的示例中,我有一个 3 列的数据框:
- 全数字
- 带有空值的数字
- 编码为因子的数据分类列
我想计算:
- 类型...(字符、因子、日期、数字等)
- 意思是……当数据类型明显是数字,并且不包括空值
- 数据集中空值的数量
我认为这很简单,我可以从这里开始运行..
复制并粘贴此代码和名称作为数据框的变量:
structure(list(allnumeric = c(10, 20, 30, 40), char_or_factor = structure(c(2L,
3L, 3L, 1L), .Label = c("bird", "cat", "dog"), class = "factor"),
num_with_null = c(10, 100, NA, NA)), .Names = c("allnumeric",
"char_or_factor", "num_with_null"), row.names = c(NA, -4L), class = "data.frame")
预期的解决方案数据框(复制并分配给变量):
structure(list(allnumeric = structure(c(3L, 2L, 1L), .Label = c("0",
"25", "numeric"), class = "factor"), char_or_factor = structure(c(2L,
NA, 1L), .Label = c("0", "character"), class = "factor"), num_with_null = structure(c(3L,
2L, 1L), .Label = c("2", "55", "numeric"), class = "factor")), .Names = c("allnumeric",
"char_or_factor", "num_with_null"), row.names = c("type", "mean",
"num_nulls"), class = "data.frame")
【问题讨论】:
-
第二列的类型不应该是
factor吗?
标签: r if-statement apply summary sapply