我想创建一个函数来计算我可以应用于任何数据集的一些预先确定的摘要统计量度量。我将从这里开始一个示例,但这适用于可能具有各种数据类型的数据集 - 例如字符,因子,数字,日期,包含空值等。
如果数据都是数字的话,我可以很容易地做到这一点 - 但处理IF场景w / apply,sapply等是我遇到语法问题的地方。 当它全部数字我很好,因为我可以做new_df = data.frame(min = sapply(mydf,2,min).....等....等等)。我不能像下面的例子那样更复杂地使用语法。
在下面的例子中,我有一个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")
答案 0 :(得分:2)
我们可以使用sapply
循环遍历列,获取class
,mean
和NA元素的数量,连接(c(
)并转换为{{1 }}
data.frame