【问题标题】:Interpolating Nested Data in R在 R 中插入嵌套数据
【发布时间】:2019-02-12 00:19:29
【问题描述】:

我是 purrr 和嵌套数据的新手,我遇到了一个我不明白的问题。基本上,我有一系列不连续的垂直剖面(按区域和压力水平分隔)需要插值。 DPUT 在下面,但我需要从 200、300、500、700 和 1000 的数据插入到例如seq(100,1000,100) 的数据。

这对于nest() 来说似乎是一个完美的问题,所以我尝试了以下方法:

OH_Interp <- as.tibble(Spiv.OH) %>%
  group_by(Month, Region) %>%
  nest() %>%
  mutate(interpolation = modify(data, spline,
                                      xout = seq(100,1000,100))) %>%
  select(Month, Region, interpolation) %>%
  unnest()

我希望这会返回一个 40x4 的数据帧,它反映了输入数据帧的结构,其中插值数据代替了原始数据。 spline() 似乎工作正常,但由于interpolation 结构没有保留data 的结构,我似乎不能像我预期的那样使用unnest() - 相反,它只会破坏内部结构interpolation 列表的长度,并将输出长度加倍为 8x3 小标题。我怎样才能让它输出一个 40x4 的数据帧呢?

提前感谢您的帮助!

有问题的数据框:

结构(列表(压力 = c(1000L, 900L, 800L, 700L, 500L, 300L, 200L, 1000L, 900L, 800L, 700L, 500L, 300L, 200L, 1000L, 900L, 800L, 700L, 500L, 300L, 200L, 1000L, 900L, 800L, 700L, 500L, 300L, 200L), 值 = c(8.12, 11.76, 17.14, 20.5, 21.08, 14.2, 11.2、7.14、7.59、7.98、8.45、8.72、8.94、8.94、3.24、4.12、4.74、 5.36, 5.34, 4.26, 3.94, 0.09, 0.09, 0.1, 0.11, 0.12, 0.1, 0.1 ), 月 = 结构 (c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L , 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c(“一月”,“七月”),class=“因子”),区域=结构(c(2L,2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("极地", "亚热带"), class= "因子")), .Names = c("压力", "值", "月", "地区"), class= "data.frame", row.names = c(NA, -28L ))

贾里德

【问题讨论】:

    标签: r tidyverse purrr


    【解决方案1】:

    如果将样条输出转换为数据框/tibble,则可以轻松地将其取消嵌套:

    as.tibble(Spiv.OH) %>%
        group_by(Month, Region) %>%
        nest() %>%
        mutate(interpolation = modify(data, 
                                      function(df, ...) { spline(df, ...) %>% 
                                              as_tibble()
                                      },
                                      xout = seq(100,1000,100))) %>%
        select(Month, Region, interpolation) %>%
        unnest(interpolation)
    

    输出:

    # A tibble: 40 x 4
       Month   Region         x     y
       <fct>   <fct>      <dbl> <dbl>
     1 January Subtropics   100 10.4 
     2 January Subtropics   200 11.2 
     3 January Subtropics   300 14.2 
     4 January Subtropics   400 18.1 
     5 January Subtropics   500 21.1 
     6 January Subtropics   600 21.9 
     7 January Subtropics   700 20.5 
     8 January Subtropics   800 17.1 
     9 January Subtropics   900 11.8 
    10 January Subtropics  1000  8.12
    # ... with 30 more rows
    

    【讨论】:

    • 谢谢!我认为它必须像这样简单。
    猜你喜欢
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    • 2021-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多