R按列中的数字对数据进行分组

标签 r data-wrangling

我正在尝试按列中的数字对数据进行分组,我尝试了不同版本的 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/

相关文章:

r - 如何在 R markdown Rstudio 中一次隐藏所有代码片段

r - 如何确保3个单独的dfs仅包含相同的列?

python - 如果列位于另一个 Spark Dataframe 中,Pyspark 将创建新列

r - 将 R 数据帧过滤为 n 个最常见的情况并按频率排序

随机森林包预测,newdata 参数?

r - RSelenium Docker 125状态

R 放大镜效果

r - ggraph网络图: specify node coordinates

r - 使用 Tidyverse 计算多列中 REDCap 数据中特定字符串的频率

R 中的矩阵右对齐