首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在dplyr中使用fill_by_function()与na.approx() [线性插值]

如何在dplyr中使用fill_by_function()与na.approx() [线性插值]
EN

Stack Overflow用户
提问于 2017-04-10 20:31:07
回答 1查看 1.2K关注 0票数 2

我正在查看padr的文档:

https://cran.r-project.org/web/packages/padr/vignettes/padr.html

稍作修改,对数据进行线性插值(zoo::na.approx()),会产生一个错误:

代码语言:javascript
复制
library(tidyverse)
library(padr)
library(zoo)

set.seed(123)

emergency %>% 
  filter(title == 'EMS: DEHYDRATION') %>% 
  thicken(interval = 'day') %>% 
  group_by(time_stamp_day) %>% 
  summarise(nr = n() + as.integer(runif(1, 1, 999)) ) %>% 
  pad()

在以下方面的成果:

代码语言:javascript
复制
# A tibble: 307 × 2
   time_stamp_day    nr
           <date> <int>
1      2015-12-12    79
2      2015-12-13    42
3      2015-12-14    NA
4      2015-12-15    NA
5      2015-12-16    NA
6      2015-12-17    NA
7      2015-12-18    88
8      2015-12-19    NA
9      2015-12-20    NA
10     2015-12-21    NA
# ... with 297 more rows

现在,,我要插值42到88线性。我认为实现这一目标的最好方法是在padr::fill_by_function()中使用padr::fill_by_function()

代码语言:javascript
复制
emergency %>% 
 filter(title == 'EMS: DEHYDRATION') %>% 
 thicken(interval = 'day') %>% 
 group_by(time_stamp_day) %>% 
 summarise(nr = n() + as.integer(runif(1, 1, 99)) ) %>% 
 pad() %>% 
 fill_by_function(nr, na.approx)

但我得到了以下错误:

代码语言:javascript
复制
Error in inds[i] <- which(colnames_x == as.character(cols[[i]])) : 
  replacement has length zero

有什么办法开始解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-10 22:20:36

您只需要mutate来执行na.approx

代码语言:javascript
复制
library(tibble);library(zoo)
emergency <- as_tibble(read.table(text="time_stamp_day    nr
1      2015-12-12    79
2      2015-12-13    42
3      2015-12-14    NA
4      2015-12-15    NA
5      2015-12-16    NA
6      2015-12-17    NA
7      2015-12-18    88
8      2015-12-19    NA
9      2015-12-20    NA
10     2015-12-21    NA",header=TRUE,stringsAsFactors=FALSE))

emergency %>% mutate(nr=na.approx(nr,na.rm =FALSE))

# A tibble: 10 × 2
   time_stamp_day    nr
            <chr> <dbl>
1      2015-12-12  79.0
2      2015-12-13  42.0
3      2015-12-14  51.2
4      2015-12-15  60.4
5      2015-12-16  69.6
6      2015-12-17  78.8
7      2015-12-18  88.0
8      2015-12-19    NA
9      2015-12-20    NA
10     2015-12-21    NA
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43332417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档