gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 09:49:28 25 4
gpt4 key购买 nike

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

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')
)

我希望用以前的值来估算(替换)NA 值
并按用户 ID 分组
如果用户 ID 的第一行具有 NA,则替换为该用户 ID 组的下一组值。

我正在尝试使用 dplyr 和 zoo 包这样的东西......但它不起作用
cleanedFUG <- filteredUserGroup %>%
group_by(UserID) %>%
mutate(Age1 = na.locf(Age),
Color1 = na.locf(Color),
Gender1 = na.locf(Gender) )

我需要这样的结果 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 23 gold 4yrs F

最佳答案

require(tidyverse) #fill is part of tidyr

ps1 %>%
group_by(userID) %>%
fill(color, age, gender) %>% #default direction down
fill(color, age, gender, .direction = "up")

这给了你:
Source: local data frame [9 x 4]
Groups: userID [3]

userID color age gender
<dbl> <fctr> <fctr> <fctr>
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 23 gold 4yrs F

关于使用 dplyr 按组将 NA 替换为上一个或下一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40040834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com