我正在尝试按列中的数字对数据进行分组,我尝试了不同版本的 group_by、cut、group 等,但我无法得到它。 我有很多数据,如下所示:
position variants
3 snv
5 snv
12 snv
17 mnv
22 deletion
27 snv
33 snv
35 snv
42 snv
46 mnv
50 snv
53 deletion
60 snv
62 snv
65 snv
70 snv
variants <- c(rep("snv", 3),rep("mnv", 1),rep("deletion", 1),rep("snv", 4), "mnv", rep("snv"), "deletion", rep("snv", 4))
variants
position = c(3, 5, 12, 17, 22, 27, 33, 35, 42, 46, 50, 53, 60, 62, 65, 70)
position
patient1 = data.frame(position, variants)
patient1
我希望能够对数据进行分组 像这样的东西:
group tally
1-10 2snv
11-20 1snv 1mnv
21-30 1deletion 1snv
31-40 2snv
etc
这样我就可以进行进一步的下游分析。 并且能够将其更改为 1-5 或 1-2 等一组 非常感谢
最佳答案
这是一个纯 R 解决方案。当然,您可以通过相应的调用来替换变量:
variants <- c(rep("snv", 3),rep("mnv", 1),rep("deletion", 1),rep("snv", 4), "mnv", rep("snv"), "deletion", rep("snv", 4))
position = c(3, 5, 12, 17, 22, 27, 33, 35, 42, 46, 50, 53, 60, 62, 65, 70)
patient1 = data.frame(position, variants)
labels = cut(position, seq(0, max(position), 10))
groups = split(patient1 , labels)
lapply(groups , function(x) {
paste( table(x$variants), names(table(x$variants)), collapse = ", " )
}
)
关于R按列中的数字对数据进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63802575/