【问题标题】:How to count length of NA values by group/factor in R?如何按 R 中的组/因子计算 NA 值的长度?
【发布时间】:2018-10-21 16:58:12
【问题描述】:

我的任务是处理从 1258 次独特调查中获得的数据。

在尺寸方面。 2800 万个个体观测值(包括 NA) -8 列(变量)。 对象名称:dat

我特别感兴趣的列/变量是教育 (edu)。我想通过聚合 (data$edu ~ id_study) 获得这些研究的 NA 和非 NA 值的长度(对于 edu)

到目前为止,我已使用此代码计算出至少包含 1 个或多个 edu 条目的研究数量。

numbers <- aggregate(dat$edu ~ dat$id_study, data=dat, FUN=length)

我得到了量化具有 edu 数据的唯一 id_study 数量所需的结果。这勾选了第一个框。

现在我需要对完全没有教育的独特 id_study 做同样的事情。我该怎么做?

我已经尝试了很多代码来计算出在 edu 上没有任何内容的研究的 NA 长度。

aggregate_2 <- aggregate(dat$edu ~ id_study, data=dat, FUN=length(dat[!is.na(dat)]))

这不起作用:(

请问有人能解释一下吗?

谢谢

编辑****** 只是为了澄清我的问题是否不清楚。有 1258 个独特的调查/研究,(有些调查可能是多年的,例如 id_study 下的 ALB_2013 和 ALB_2014)。

在这些调查中,使用公式1 代码和我在描述中输入的代码,代码1,我计算出这 1258 个调查中有 530 个在 edu 列下提供了 >=1 的个人观察。

这一定意味着 728 Unique 调查在 edu 下根本没有提供任何信息。 我想计算出 728 个调查的名称并使用一个函数,希望能计算出每次调查的 NA 长度,而这根本没有提供任何信息。

我希望这是有道理的。

id_study(调查名称)id(调查id)我感兴趣的列是“edu”。

【问题讨论】:

  • 欢迎来到 StackOverflow!请阅读有关how to ask a good question 的信息以及如何提供reproducible example。这将使其他人更容易帮助您。
  • 我看到两件事:在 id_study 前面缺少 dat$ 并且 FUN 参数是一个函数,您可能想要改为说 FUN = (function(x) {sum(!is.na(x))})
  • @RobinGertenbach 您实际上不需要(也不应该使用)aggregate 中的任何 dat$ 前缀,只要您提供 data 参数。所以aggregate(edu ~ id_study, data = dat, FUN = length) 很好。
  • 哦,是的,我错过了数据参数,感谢您指出这一点
  • 大家好,谢谢你们的回复,请问是哪一个?

标签: r merge aggregate na data-manipulation


【解决方案1】:

首先:发布数据的屏幕截图是不好的做法,因为这需要 SO 受访者手动输入您的样本数据。使用dput 发布(部分)您的数据。对于未来的问题,请遵循 Sotos 第一条评论中的建议和链接!

除此之外,以下如何:

numbers <- aggregate(
    edu ~ id_study, 
    data = dat, 
    FUN = function(x) c(n_nonNA = sum(!is.na(x)), n_NA = sum(is.na(x))))

【讨论】:

  • 抱歉截图,这是我之前第二次使用这个论坛并且不知道正常的约定。谢谢你让我知道。其次,我在最初的帖子中输入的第一个方程与你上面的方程做了同样的事情。但是,,,我想做的是相反;聚合并返回唯一 id_study 的数量/长度,它在 edu 变量上没有任何内容。非常感谢
  • @Shivyb 我不确定我是否理解;我的代码计算非NANA 的行数。这似乎与您的帖子 “我想获得 NA 和非 NA 值的长度(对于 edu)” 一致。如果没有,请编辑您的问题以包含示例数据(使用例如dput)和预期输出。
  • 只是为了澄清我是否不清楚我的问题。有 1258 次独特的调查,(有些调查可能是多年的,例如 id_study 下的 ALB_2013 和 ALB_2014)和 2800 万个人参加了这项调查。在这些调查中,使用您的代码和我在描述中输入的代码,代码 [1],我们计算出这 1258 项调查中有 530 项在 edu 列下提供了 >=1 的个人观察。这一定意味着 728 Unique 调查根本没有提供任何信息。我想使用聚合计算出 728 的名称以及这些受教育的 NA 值的长度
  • 我们能够为那些提供不止一项观察的调查执行此操作,我们应该能够为那些没有提供任何内容的调查执行此操作非常感谢
  • @Shivyb 您必须编辑您的问题以包含示例数据和预期输出!不要在 cmets 中发布关键信息。查看 Sotos 评论中的信息!我不明白你的意思。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-10
  • 2021-05-08
  • 2013-06-11
  • 1970-01-01
  • 2021-06-20
相关资源
最近更新 更多