【问题标题】:Extracting all value from a data set based for every categorical numerical value in R基于 R 中的每个分类数值从数据集中提取所有值
【发布时间】:2015-10-22 17:33:03
【问题描述】:

我有一个任意数量的行和两列的数据集:a 和 b。我想找到 b 的特定值的 a 值的数量。如果给定下面的数据集,我希望 a1 = 2, a2 = 1 用于 b1 的设定值。

  a   b
  1   1
  1   1
  2   1
  2   2
  3   2
  3   2

我尝试过的代码:

 data[a == 1 & b == 1, list(b = length(b))]

不起作用的代码:

data[a == c(1,2) & b == 1, list(b = length(b))]

如何获取一组 b 值的所有 a 值?

预期数据输出:

    b1 
a1  2
a2  1
a3  0
etc.     

感谢 akrun 的代码:

library(data.table)
table(as.integer(data$a),data$b=='b1')[,2]

确保您的 [,2] 与您的“b”列匹配。
此外,as.integer() 按顺序排列值。

【问题讨论】:

  • 试试library(data.table); setDT(data)[, .N,.(a,b)] 好混乱,能不能显示预期的输出?
  • @akrun 可能是setDT(df)[b == 1, .N, by = a]setDT(df)[b == 1, table(a)]
  • 顺便说一句,这是data.table 的问题吗?
  • @DavidArenburg 帖子中未提及且未标记。
  • 我添加了预期的数据输出,但我会尝试你建议的一些事情。请注意,将其称为“a1”,以免混淆。实际上,它只是列表中 a 的值 = "1","2","3" 等。

标签: r dataset extract


【解决方案1】:

我们可以使用table

 table(within(data, b<-b==1))[,'TRUE', drop=FALSE]

编辑:包括@Frank 的建议。

【讨论】:

  • 效果很好,谢谢 akrun。感谢您对 stackoverflow 的巨大贡献。
猜你喜欢
  • 1970-01-01
  • 2020-07-12
  • 2022-08-19
  • 1970-01-01
  • 1970-01-01
  • 2022-11-30
  • 2023-03-17
  • 1970-01-01
相关资源
最近更新 更多