gpt4 book ai didi

r - 按组跨多列计数

转载 作者:行者123 更新时间:2023-12-05 08:28:56 24 4
gpt4 key购买 nike

我的数据集如下所示:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com