使用dplyr使用complete填充缺失值

58wvjzkj  于 2022-12-30  发布在  其他
关注(0)|答案(1)|浏览(137)

我有这样一个 Dataframe :

library(tidyverse)

df = tibble(AOI = c('NA', 'NA', 'NA', 'NA', 'NA', 'EA', 'EA'),
            Values = c(-1, -1, 0, 1, 1, -1, 0))

df = df %>% group_by(AOI, Values) %>% tally()

AOI     Values  n
<chr>   <dbl>   <int>
EA     -1       1
EA      0       1
NA     -1       2
NA      0       1
NA      1       2

我希望确保每个唯一AOI都存在所有值-1、0和1。到目前为止,EA组缺少1。我希望使用"我相信complete"来确保自动添加缺少的三个值中的任何一个,并使用0填充n
我正在尝试这个:

df = df %>% complete(AOI, Values, fill = list(n = 0))

但这失败于:

Error in `dplyr::summarise()`:
! Problem while computing `..1 = complete(data = dplyr::cur_data(), ...,
  fill = fill, explicit = explicit)`.
ℹ The error occurred in group 1: AOI = "EA".
Caused by error:
! object 'AOI' not found

我的预期输出如下:

AOI     Values  n
<chr>   <dbl>   <int>
EA     -1       1
EA      0       1
EA      1       0
NA     -1       2
NA      0       1
NA      1       2

编辑:
它不一定要完成这项任务,任何方式来获得所需的输出是罚款与我。

vngu2lb8

vngu2lb81#

我想在不断地覆盖你的 Dataframe 几次之后,它可能产生了一个错误,也许是因为保存了一些意想不到的东西。

  • 所以,我稍微修改了代码。

代码

library(tidyverse)

df <- tibble(AOI = c('NA', 'NA', 'NA', 'NA', 'NA', 'EA', 'EA'),
            Values = c(-1, -1, 0, 1, 1, -1, 0))

df %>%
  arrange(AOI) %>% 
  count(AOI, Values) %>% 
  complete(AOI, Values,fill = list(n = 0))

输出

# A tibble: 6 x 3
  AOI   Values     n
  <chr>  <dbl> <dbl>
1 EA        -1     1
2 EA         0     1
3 EA         1     0
4 NA        -1     2
5 NA         0     1
6 NA         1     2

相关问题