gpt4 book ai didi

r - group_by() 到 fill() 没有按预期工作

转载 作者:行者123 更新时间:2023-12-04 03:07:02 26 4
gpt4 key购买 nike

我正在尝试使用 dplyr 对一些格式错误的数据进行最后一次观察结转操作和 tidyr .它不像我预期的那样工作。

library(dplyr)
library(tidyr)

df <- data.frame(id=c(1,1,2,2,3,3),
email=c('bob@email.com', NA, 'joe@email.com', NA, NA, NA))
df2 <- df %>% group_by(id) %>% fill(email)

这导致:
Source: local data frame [6 x 2]
Groups: id [3]

id email
(dbl) (fctr)
1 1 bob@email.com
2 1 bob@email.com
3 2 joe@email.com
4 2 joe@email.com
5 3 joe@email.com
6 3 joe@email.com

我希望它是:
Source: local data frame [6 x 2]
Groups: id [3]

id email
(dbl) (fctr)
1 1 bob@email.com
2 1 bob@email.com
3 2 joe@email.com
4 2 joe@email.com
5 3 NA
6 3 NA

我希望它是后者的原因是因为 group_by的文档说,“ group_by 函数采用现有的 tbl 并将其转换为分组的 tbl,其中操作是“按组”执行的。”本例中的组由 id 决定变量,下面的操作是 fill(email) .然而,它显然没有这样做。

在有人问之前,如果字段都是 character 没有区别。而不是 numericfactor .

更新
@aosmith 指出 this open issue在 Github 上。我要说的是,在该问题得到解决之前,不会有适当的解决方案来解决该问题。其他一切都只是一种解决方法。因此,如果有人成功解决了该问题并将其发布在这里,我很乐意将其标记为解决方案。

最佳答案

看起来这已经在 tidyr 的开发版本中修复了。您现在可以使用 fill 获得每个 id 的预期结果来自 tidyr_0.3.1.9000。

df %>% group_by(id) %>% fill(email)

Source: local data frame [6 x 2]
Groups: id [3]

id email
(dbl) (fctr)
1 1 bob@email.com
2 1 bob@email.com
3 2 joe@email.com
4 2 joe@email.com
5 3 NA
6 3 NA

关于r - group_by() 到 fill() 没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34517370/

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