R中混合数据的摘要和描述表

时间:2016-07-05 05:28:31

标签: r if-statement apply summary sapply

我想创建一个函数来计算我可以应用于任何数据集的一些预先确定的摘要统计量度量。我将从这里开始一个示例,但这适用于可能具有各种数据类型的数据集 - 例如字符,因子,数字,日期,包含空值等。

如果数据都是数字的话,我可以很容易地做到这一点 - 但处理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")

1 个答案:

答案 0 :(得分:2)

我们可以使用sapply循环遍历列,获取classmean和NA元素的数量,连接(c()并转换为{{1 }}

data.frame