【问题标题】:How do you unwrap hyphen and comma-separated number ranges in R? Eg 1,3,5-7 -> 1,3,5,6,7 on different rows你如何在 R 中打开连字符和逗号分隔的数字范围?例如 1,3,5-7 -> 1,3,5,6,7 在不同的行
【发布时间】:2022-12-12 23:16:55
【问题描述】:

大家好,我想知道是否有人可以帮助我解决一些让我在开始使用 R 时遇到的困难?类似于这篇文章,但在 R 中:https://stackoverflow.com/questions/63149712/how-do-you-unwrap-hyphen-separated-number-ranges-in-a-pandas-dataframe-column

本质上与 R.utils 函数 seqToHumanReadable 相反。

Title LLFCs Red
a 15, 18 11.65
b 16 & 19 9.08
c 112-114 6.45
d 113-115,145-147 6.45

会成为:

Title LLFCs Red
a 15 11.65
a 18 11.65
b 16 9.08
b 19 9.08
c 112 6.45
c 113 6.45
c 114 6.45
d 113 6.45
d 114 6.45
d 115 6.45
d 145 6.45
d 146 6.45
d 147 6.45

非常感谢您的帮助!

我开始尝试 if,计算出每个连字符数字的区别,并通过循环运行多次,试图添加额外的行,但结果一团糟

【问题讨论】:

    标签: r range hyphenation


    【解决方案1】:

    使用 tidyr::separate_rows 你可以这样做:

    library(tidyr)
    
    dat <- data.frame(
      Title = c("a", "b", "c", "d"),
      LLFCs = c("15, 18", "16 & 19", "112-114", "113-115,145-147"),
      Red = c(11.65, 9.08, 6.45, 6.45)
    )
    
    dat %>%
      separate_rows(LLFCs)
    #> # A tibble: 10 × 3
    #>    Title LLFCs   Red
    #>    <chr> <chr> <dbl>
    #>  1 a     15    11.6 
    #>  2 a     18    11.6 
    #>  3 b     16     9.08
    #>  4 b     19     9.08
    #>  5 c     112    6.45
    #>  6 c     114    6.45
    #>  7 d     113    6.45
    #>  8 d     115    6.45
    #>  9 d     145    6.45
    #> 10 d     147    6.45
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      • 2016-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多