【问题标题】:How to expand a dataframe in R with a continuous variable? [duplicate]如何使用连续变量在 R 中扩展数据框? [复制]
【发布时间】:2021-11-29 11:10:06
【问题描述】:

我有这个数据集:

group_ask <- c('A', 'A', 'B', 'B', 'C', 'C')
number_ask <- c(1, 3, 2, 4, 5, 8)
df_ask <- data.frame(group_ask, number_ask)

我正在尝试通过完成连续的number_ask 列来扩展group_ask 列。解决方案数据集应如下所示:

group_want <- c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C', 'C')
number_want <- c(1, 2, 3, 2, 3, 4, 5, 6, 7, 8)
df_want <- data.frame(group_want, number_want)

我一直在尝试解决这个 R 的 expand() 函数,但没有成功。

有什么建议吗?非常感谢!

【问题讨论】:

    标签: r dataframe expand


    【解决方案1】:

    你可以使用complete -

    library(dplyr)
    library(tidyr)
    
    df_ask %>%
      group_by(group_ask) %>% 
      complete(number_ask = min(number_ask):max(number_ask)) %>%
      ungroup
    
    #  group_ask number_ask
    #   <chr>          <dbl>
    # 1 A                  1
    # 2 A                  2
    # 3 A                  3
    # 4 B                  2
    # 5 B                  3
    # 6 B                  4
    # 7 C                  5
    # 8 C                  6
    # 9 C                  7
    #10 C                  8
    

    【讨论】:

      【解决方案2】:

      使用by的拆分应用组合方法。

      do.call(rbind.data.frame, 
              by(df_ask, df_ask$group_ask, \(x) 
                 cbind(x[1, 1], do.call(seq, as.list(x[, 2]))))) |>
        setNames(names(df_ask))
      #     group_ask number_ask
      # A.1         A          1
      # A.2         A          2
      # A.3         A          3
      # B.1         B          2
      # B.2         B          3
      # B.3         B          4
      # C.1         C          5
      # C.2         C          6
      # C.3         C          7
      # C.4         C          8
      

      【讨论】:

        猜你喜欢
        • 2022-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-30
        • 1970-01-01
        相关资源
        最近更新 更多