gpt4 book ai didi

r - 如何在R中使用dplyr生成以当前行为条件的多行?

转载 作者:行者123 更新时间:2023-12-04 07:35:58 24 4
gpt4 key购买 nike

我有一个包含多个 4 位代码的数据框。根据第三位数字的值,我想通过以下方式操作数据框:

  • 如果第三位数字 != "0"什么都不做
  • 如果第 3 位数字 ==“0”,则消除该元素并将其替换为下一个 xx{10-99} .其中 xx 是元素的起始前两位数字,{10-99} 表示应将 {xx10,xx11,xx12,...,xx99} 添加到数据帧中。

  • 有什么想法可以用 dplyr 实现吗?
    提前致谢!
    例如
    df <- data.frame("id"= c("1111","1231","1000","2222","2900")
    df
    我想将 df 转换为以下 df
    {"1111","1231","1010","1011",...,"1099","2222","2910","2911",..."2999"}

    最佳答案

    library(dplyr)
    dat <- tibble(id = 1:2, code = c("1111", "2201"))
    dat
    # # A tibble: 2 x 2
    # id code
    # <int> <chr>
    # 1 1 1111
    # 2 2 2201

    dat %>%
    filter(substr(code, 3, 3) == "0") %>%
    rowwise() %>%
    do({
    newcodes <- sprintf("%02i", 0:3)
    mutate(as_tibble(.)[rep(1, length(newcodes)),],
    code = paste0(substr(code, 1, 2), newcodes))
    }) %>%
    bind_rows(filter(dat, substr(code, 3, 3) != "0"), .)
    # # A tibble: 5 x 2
    # id code
    # <int> <chr>
    # 1 1 1111
    # 2 2 2200
    # 3 2 2201
    # 4 2 2202
    # 5 2 2203
    我从00到03,你可以随便填。

    关于r - 如何在R中使用dplyr生成以当前行为条件的多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67738803/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com