【问题标题】:How to assign groups based on a column value如何根据列值分配组
【发布时间】:2020-09-27 22:56:45
【问题描述】:

我有以下df:

Marker CHR      val  Position
1        1      2.10     1
2        1      2.11     10
3        1      3.33     20
4        1      3.55     30
5        1      2.06     40
6        2      2.03     1
7        2      3.04     10
8        2      3.10     20
9        2      3.05     30
10       2      2.90     40

如何使用基于列位置的窗口大小根据 val 值(例如 val > 3)分配组。

【问题讨论】:

  • 预期输出是什么

标签: r dplyr statistics data.table aggregate


【解决方案1】:

也许这也有帮助

library(dplyr)
df1 %>% 
  mutate(group = cut(val, breaks = c(20, 50, 70, 100), 
      labels = c('Group 1', 'Group 2', 'Group 3')))

【讨论】:

    【解决方案2】:

    预期的输出是什么?也许是这样的?

    library(tidyverse)
    
    test <- read_csv('sample.csv')
    
    test %>% mutate(group = case_when(val >= 20 & val <= 49 ~ 'Group 1',
                                          val >= 50 & val <= 69 ~ 'Group 2',
                                          val >= 70 & val <= 100 ~ 'Group 3')) %>%
                                          group_by(group) 
    
    # A tibble: 9 x 5
    # Groups:   group [3]
    Marker   CHR   val Position group  
    <dbl> <dbl> <dbl>    <dbl> <chr>  
    1      1     1    20        5 Group 1
    2      2     1    30        6 Group 1
    3      3     2    40        7 Group 1
    4      4     2    50        8 Group 2
    5      5     3    60        9 Group 2
    6      6     4    70       10 Group 3
    7      7     2    80       11 Group 3
    8      8     1    90       12 Group 3
    9      9     1   100       13 Group 3
    

    【讨论】:

      猜你喜欢
      • 2018-11-15
      • 2022-11-30
      • 2021-12-11
      • 2015-11-19
      • 1970-01-01
      • 2019-11-22
      • 2016-09-06
      • 1970-01-01
      相关资源
      最近更新 更多