【问题标题】:Expand data set to fill in with sequential values in R [duplicate]扩展数据集以填充 R 中的顺序值 [重复]
【发布时间】:2020-08-18 20:27:12
【问题描述】:

我有一个如下所示的数据集,其中包含更多分组变量。我想做的是扩展这个数据集,以便每个 Score1 都与它对应的从 Min 到 Max 的 Score2 相关联。

data = data.frame(
  Score1 = c(286, 287, 288, 289, 290, 291),
  Score2_Min = c(108, 112, 112, 112, 112, 112),
  Score2_Max = c(111, 113, 113, 113, 113, 113)

  Score1 Score2_Min Score2_Max
1    286        108        111
2    287        112        113
3    288        112        113
4    289        112        113
5    290        112        113
6    291        112        113
)

所以最终的数据集应该是这样的:

   Score1 Score2
1     286    108
2     286    109
3     286    110
4     286    111
5     287    112
6     287    113
7     288    112
8     288    113
9     289    112
10    289    113
11    290    112
12    290    113
13    291    112
14    291    113
)

【问题讨论】:

    标签: r


    【解决方案1】:

    我们可以在list 列中使用map2 得到从'Score2_Min' 到'Score2_Max' 的逐行序列,然后在unnest 列中得到unnest

    library(dplyr)
    library(tidyr)
    library(purrr)
    data %>% 
        transmute(Score1, Score2 = map2(Score2_Min, Score2_Max, `:`)) %>%
        unnest(Score2)
    # A tibble: 14 x 2
    #   Score1 Score2
    #    <dbl>  <int>
    # 1    286    108
    # 2    286    109
    # 3    286    110
    # 4    286    111
    # 5    287    112
    # 6    287    113
    # 7    288    112
    # 8    288    113
    # 9    289    112
    #10    289    113
    #11    290    112
    #12    290    113
    #13    291    112
    #14    291    113
    

    【讨论】:

      【解决方案2】:
      library(data.table)
      setDT(data)
      data[,.(Score2 = Score2_Min:Score2_Max), Score1]
      

      【讨论】:

        猜你喜欢
        • 2020-08-23
        • 1970-01-01
        • 2021-01-11
        • 2019-05-02
        • 2018-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-03
        相关资源
        最近更新 更多