繁体   English   中英

根据 ID 出现次数和另一列值制表 R

[英]Tabulate based on number of times ID occurs AND another column value R

我正在为一项研究格式化表格,以计算一个人收集生物样本的次数。 该表显示了一个人有多少次单独的诊所访问收集了样本类型。

我想计算每个样本类型的 ID 出现的次数。 例如,如果 ID =“1234”的人在 SAMPLETYPE 列中出现 4 次 ID 和“DNA”,那么他们在 4 次访问时收集了 DNA。 我希望表格看起来像这样:

样本类型 1 次访问 2 次访问 3 次访问
脱氧核糖核酸 80 47 24
核糖核酸 36 12 6个
血清 112 89 65

我的 dataframe 的结构如下:

SAMPLETYPE <- c("DNA","DNA","RNA","PLASMA","RNA","RNA","DNA","PLASMA","PLASMA","PLASMA",
"RNA","RNA","RNA")
ID <- c("1","1","1","2","3","2","4","4","4","5","1","1","1")
df <- data.frame(ID,SAMPLETYPE)

df
   ID SAMPLETYPE
1   1        DNA
2   1        DNA
3   1        RNA
4   2     PLASMA
5   3        RNA
6   2        RNA
7   4        DNA
8   4     PLASMA
9   4     PLASMA
10  5     PLASMA

上面,ID = 1 在 2 次就诊时收集了 DNA,在 1 次就诊时收集了 RNA。 预期的 output 将是:

样本类型 1 次访问 2 次访问 3 次访问
脱氧核糖核酸 1个 1个 0
核糖核酸 3个 0 1个
等离子体 2个 1个 0

我将如何操作 R 中的这个 dataframe 以示例格式构建表?

library(tidyverse)
df %>% 
  count(SAMPLETYPE, ID) %>%   # count the combinations
  count(SAMPLETYPE, n) %>%    # count the frequency of combinations
  pivot_wider(names_from = n, names_prefix = "visits_", 
              values_from = nn, values_fill = 0)

我从最近的示例数据中得到不同的 output。 例如,看起来 ID 1 有 4 次 RNA 访问,而 ID 2 和 3 各有 1 次。

# A tibble: 3 x 4
  SAMPLETYPE visits_1 visits_2 visits_4
  <chr>         <int>    <int>    <int>
1 DNA               1        1        0
2 PLASMA            2        1        0
3 RNA               2        0        1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM