【问题标题】:Return table with count of elements that match a condition返回具有匹配条件的元素计数的表
【发布时间】:2020-09-28 14:45:52
【问题描述】:

我是堆栈溢出的新手。我在 R 方面有一些经验,但不是很多。我想我想要实现的目标很简单,但我不知道如何获得它。

我有一个包含四列的数据框:参与者 ID、试验 ID、问题 ID 和结果。在简化版本中,它看起来像这样:

Participant     Trial    Question     Outcome
P01             T01      Q01          PASS
P01             T01      Q02          PASS
P01             T02      Q01          FAIL
P01             T02      Q02          FAIL
P01             T03      Q01          FAIL
P01             T03      Q02          PASS
P02             T01      Q01          FAIL
P02             T01      Q02          PASS
P02             T02      Q01          PASS
P02             T02      Q02          PASS
P02             T03      Q01          FAIL
P02             T03      Q02          PASS
P03             T01      Q01          FAIL
P03             T01      Q02          FAIL
P03             T02      Q01          PASS
P03             T02      Q02          PASS
P03             T03      Q01          PASS
P03             T03      Q02          FAIL

如何获得一个表格,在该表格中我可以看到每个试验和参与者的“通过”问题的数量。看起来像这样的东西:

     T01   T02   T03
P01   2     0     1
P02   1     2     1
P03   0     2     1

如果我使用“表格”功能,我只能得到参与者和试验的每个组合出现在数据框行中的频率。

有什么想法吗?提前谢谢你。

【问题讨论】:

  • 试试with(df[df$Outcome=="PASS",],table(Participant,Trial))df是你的data.frame)。
  • 这能回答你的问题吗? R: Summarize rows per month
  • 您好,感谢您的建议,但该链接中的信息并没有真正帮助。 “Ronak Shah”和“nicola”给我的建议效果很好,而且直截了当。此外,@akrun 将主题标记为重复,但在访问建议的链接时,我无法弄清楚那里的信息如何回答我的问题。这里给出的建议正是我所需要的。

标签: r count conditional-statements frequency-table


【解决方案1】:

为“PASS”值设置数据子集,然后使用table

temp <- subset(df, Outcome == 'PASS')
table(temp$Participant, temp$Trial)

#      T01 T02 T03
#  P01   2   0   1
#  P02   1   2   1
#  P03   0   2   1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    • 2012-10-25
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 2021-12-21
    相关资源
    最近更新 更多