【问题标题】:Count with condition有条件计数
【发布时间】:2020-05-26 19:49:01
【问题描述】:

我想计算一个变量 id_tasks 每月出现的频率。月份变量是从 1 到 12。

到目前为止,我只计算了每项任务在以下方面发生的频率: 我想知道任务在每个月发生的频率作为输出,以便检测哪个月的任务最多/最少。

count(df,c('id_task'))
id_task id_user day completion_yesno day_created has_deadline deadline created_before active overdue completed_before month 
16416   37033    5272  61                0          61            1      172              0      0       0                0
16417   37033    5272  62                0          61            1      172              2      2       0                0
16418   37033    5272  63                0          61            1      172              2      2       0                0
16419   37033    5272  64                0          61            1      172              2      2       0                0
16420   37033    5272  65                0          61            1      172              2      2       0                0
16421   37033    5272  66                0          61            1      172              2      2       0                0
16422   37033    5272  67                0          61            1      172              2      2       0                0
16423   37033    5272  68                0          61            1      172              2      2       0                0
16424   37033    5272  69                0          61            1      172              2      2       0                0
16425   37033    5272  70                0          61            1      172              2      2       0                0
16426   37033    5272  71                0          61            1      172              2      2       0                0
16427   37033    5272  72                0          61            1      172              2      2       0                0
16428   37033    5272  73                0          61            1      172              2      2       0                0
16429   37033    5272  74                0          61            1      172              2      2       0                0
16430   37033    5272  75                0          61            1      172              2      2       0                0
16431   37033    5272  76                0          61            1      172              2      2       0                0
16432   37033    5272  77                0          61            1      172              2      2       0                0
16433   37033    5272  78                0          61            1      172              2      2       0                0
16434   37033    5272  79                0          61            1      172              2      2       0                0
16435   37033    5272  80                0          61            1      172              2      2       0                0

想要的输出:

id_task  month freq
1         12    3
2          1    20

【问题讨论】:

  • 请提供样本数据,以便我们了解范围。这可以通过dput(head(df))data.frame(...) 以编程方式构建新数据来完成。另外,给定样本数据,您想要的输出是什么?这可能意味着您必须手动计算一次才能明白这一点。最后,你试过什么?参考:stackoverflow.com/q/5963269minimal reproducible examplestackoverflow.com/tags/r/info
  • @我已经添加了数据和所需的输出,不知何故表格被破坏了..,我不知道如何修复它。
  • 我不知道您所说的“破坏”是什么意思:我建议对将数据放入代码块中的问题进行编辑(更易于阅读)。你是说无格式数据的表格定宽格式很难看?
  • 'task' 在哪里玩?我看到一列 "id_task",但任务 1 和 2 没有出现在您的原始数据中。 (当您的预期输出与示例中的实际数据相对应时,这真的很有帮助。另外,month 来自哪里?我在数据中的任何地方都看不到它。
  • 最后一点,艾米,当您的代码和示例一致时,它真的很有帮助。除了数据(之前的评论),还有'Id_task'id_task。当我们不确定它不是实际代码中的真正拼写错误时,可能很难通过复制/粘贴拼写错误来发现真正的问题。

标签: r if-statement variables count


【解决方案1】:

如果你想统计所有 X 月任务组合的出现次数,table是你的函数:

table(df[, c("month", "id_task")])

你可以用这个虚拟数据重新运行它:

df <- data.frame(id_task= sample.int(15, 100, replace = TRUE), month = rep(1:12, length.out=100))
table(df[, c("month", "id_task")])

如果您想要每月任务的总和,只需删除任务列并像这样运行它:

table(df[, c("month")])

【讨论】:

  • 如果将表格包裹在as.data.frame(...)中,则可以在想要的输出中得到三列输出。
  • Jan @r2evans 这个组合让它变得很糟糕!现在我每个月都有每个任务,有没有办法将整体任务汇总到每个月?
  • @Jan 我现在已经创建了虚拟变量,是否可以说明每月任务发生的频率?
【解决方案2】:

您可以使用 dplyr 包询问以下内容:

data %>%
> group_by(month) %>%
> count(id_task)

我认为这样就可以了。 (:

【讨论】:

  • @GabrielReis,考虑将id_task 添加到您的分组中,它可能更符合所要求的内容(尽管 OP 对此并不清楚)。
猜你喜欢
  • 1970-01-01
  • 2017-12-25
  • 2014-01-12
  • 1970-01-01
  • 2020-11-05
  • 1970-01-01
  • 2014-08-01
  • 2018-06-20
  • 2015-11-04
相关资源
最近更新 更多