[英]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.