r - 按组跨多列计数

标签 r count

我的数据集如下所示:

Names       Sample   Init_QC  Run_QC
A             DN      PASS     PASS
A             DN      FAIL     PASS
A             RN      FAIL     FAIL
B             DN      PASS     FAIL
B             DN      PASS     PASS
B             RN      FAIL     PASS
C             DN      PASS     FAIL
C             DN      FAIL     FAIL
C             RN      PASS     PASS

我希望通过计算每个类别的出现次数来按“名称”总结事物。结果看起来像这样:

Names   DN  RN   Init_QC$PASS  Init_QC$FAIL   Run_QC$PASS   Run_QC$FAIL
 A      2    1       1              2             2              1
 B      2    1       2              1             2              1
 C      2    1       1              2             1              2

我希望使用 dplyr 中的“table”或“count”但没有成功

谁有简单的方法来做到这一点? 非常感谢

最佳答案

在基础 R 中:

 aggregate(.~Names, df, table)

  Names Sample.DN Sample.RN Init_QC.FAIL Init_QC.PASS Run_QC.FAIL Run_QC.PASS
1     A         2         1            2            1           1           2
2     B         2         1            1            2           1           2
3     C         2         1            1            2           2           1

要将所有内容放入列中,请执行以下操作:

do.call(data.frame, aggregate(.~Names, df, table))

  Names Sample.DN Sample.RN Init_QC.FAIL Init_QC.PASS Run_QC.FAIL Run_QC.PASS
1     A         2         1            2            1           1           2
2     B         2         1            1            2           1           2
3     C         2         1            1            2           2           1

使用reshape2:

reshape2::recast(df, Names~variable+value, fun.agg = length, id.var = 'Names')

  Names Sample_DN Sample_RN Init_QC_FAIL Init_QC_PASS Run_QC_FAIL Run_QC_PASS
1     A         2         1            2            1           1           2
2     B         2         1            1            2           1           2
3     C         2         1            1            2           2           1

在 tidyverse 中:

library(tidyverse)  
df %>%
   pivot_longer(-Names) %>%
   count(Names, name, value) %>%
   pivot_wider(Names, names_from = c(name, value), values_from = n)

# A tibble: 3 x 7
  Names Init_QC_FAIL Init_QC_PASS Run_QC_FAIL Run_QC_PASS Sample_DN Sample_RN
  <chr>        <int>        <int>       <int>       <int>     <int>     <int>
1 A                2            1           1           2         2         1
2 B                1            2           1           2         2         1
3 C                1            2           2           1         2         1

关于r - 按组跨多列计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72691810/

相关文章:

python - 从从表单生成 csv 文件的网站抓取网页 (http ://njdep. rutgers.edu/continuous/data.php)

r - 使用 R 删除特定变量中不包含 .(点)的行

r - 按唯一标识符聚合并将相关值连接成字符串

r - SpatialLinesDataFrame : how to calculate the min. 点和线之间的距离

sql - 一个查询中的两个计数与相反的 where 条件

r - 如何在 ggplot2 中设置 y 轴标签的宽度

PHP MYSQL - 在同一查询中计算和平均

c - 如何检查数组中的特定值

Node.js MongoDB 驱动游标计数不正确

sql - 我可以使用什么 SQL 从我的付款数据中检索计数?