相关疑难解决方法(0)

使用dplyr按组替换NA与上一个或下一个值

我有一个数据框,按日期的降序排列.

ps1 = data.frame(userID = c(21,21,21,22,22,22,23,23,23), 
             color = c(NA,'blue','red','blue',NA,NA,'red',NA,'gold'), 
             age = c('3yrs','2yrs',NA,NA,'3yrs',NA,NA,'4yrs',NA), 
             gender = c('F',NA,'M',NA,NA,'F','F',NA,'F') 
)
Run Code Online (Sandbox Code Playgroud)

我希望将NA值用先前的值归入(替换)并按userID分组如果userID的第一行有NA,则替换为该用户ID组的下一组值.

我正在尝试使用像这样的dplyr和zoo软件包......但它不起作用

cleanedFUG <- filteredUserGroup %>%
 group_by(UserID) %>%
 mutate(Age1 = na.locf(Age), 
     Color1 = na.locf(Color), 
     Gender1 = na.locf(Gender) ) 
Run Code Online (Sandbox Code Playgroud)

我需要结果df像这样:

                      userID color  age gender
                1     21  blue 3yrs      F
                2     21  blue 2yrs      F
                3     21   red 2yrs      M
                4     22  blue 3yrs      F
                5     22  blue 3yrs      F
                6     22  blue 3yrs      F
                7     23   red 4yrs      F
                8     23   red 4yrs      F
                9 …
Run Code Online (Sandbox Code Playgroud)

r missing-data zoo dplyr

27
推荐指数
3
解决办法
2万
查看次数

使用dplyr填充缺少的序列值

我有一个数据框,缺少"SNAP_ID"的值.我想基于前一个非缺失值(lag()?)的序列用浮点值填充缺失值.如果可能的话,我真的想用dplyr实现这个目的.

假设:

  1. 根据数据集的最小值和最大值之间的缺失天数,我将永远不会丢失数据作为第一行或最后一行生成缺失日期
  2. 数据集中可能存在多个间隙

目前的数据:

                  end SNAP_ID
1 2015-06-26 12:59:00     365
2 2015-06-26 13:59:00     366
3 2015-06-27 00:01:00      NA
4 2015-06-27 23:00:00      NA
5 2015-06-28 00:01:00      NA
6 2015-06-28 23:00:00      NA
7 2015-06-29 09:00:00     367
8 2015-06-29 09:59:00     368
Run Code Online (Sandbox Code Playgroud)

我想要实现的目标:

                  end SNAP_ID
1 2015-06-26 12:59:00     365.0
2 2015-06-26 13:59:00     366.0
3 2015-06-27 00:01:00     366.1
4 2015-06-27 23:00:00     366.2
5 2015-06-28 00:01:00     366.3
6 2015-06-28 23:00:00     366.4
7 2015-06-29 09:00:00     367.0
8 2015-06-29 09:59:00     368.0
Run Code Online (Sandbox Code Playgroud)

作为数据框架:

df <- structure(list(end = structure(c(1435323540, …
Run Code Online (Sandbox Code Playgroud)

r dplyr

4
推荐指数
1
解决办法
2004
查看次数

用每月序列填充 NA

我想用每月的序列填充 NA。我试着用

fill(dates,seq.Dates(dates,%m+%)) 
Run Code Online (Sandbox Code Playgroud)

但它没有用。

我目前的日期如下:

dates <- structure(list(dates = structure(c(1L, NA, NA, NA, NA, 2L, NA, 
NA, NA, 3L), .Label = c("2019-02-01", "2019-02-05", "2019-02-09"
), class = "factor")), row.names = c(NA, -10L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)

我想要的输出应该是这样的:

期望输出

r tidyr

3
推荐指数
1
解决办法
76
查看次数

标签 统计

r ×3

dplyr ×2

missing-data ×1

tidyr ×1

zoo ×1