NA заменяет заготовками - PullRequest
4 голосов
/ 28 января 2020

Я использовал тот же метод для замены NA пробелами или другими символами, но по какой-то причине этот метод не работает. Я хочу заменить NA на моем информационном кадре пробелами (столбцы year и Annual). Что я делаю не так?

shad.92 <- structure(list(year = c(1992, NA, NA, NA, NA), type = c("all age abundance index", 
"adjusted number of fish older than age 0 measured", "adjusted total number of fish measured", 
"percent YOY", "YOY abundance index"), September = c(755, 0, 
565, 100, 755), October = c(530, 0, 434, 100, 530), November = c(463, 
0, 338, 100, 463), December = c(266, 1, 136, 99.3, 264), Annual = c(2014, 
NA, NA, NA, 2012)), row.names = c(NA, -5L), class = c("tbl_df", 
"tbl", "data.frame"))

Я попробовал это без удачи:

shad.92 <- shad.92[is.na(shad.92)] <- ""

Затем я попробовал один столбец за один раз, начиная с года:

shad.92$year <- as.character(shad.92$year)
    shad.92$year[is.na(shad.92$year)] <- " "
    shad.92 

Но вместо пробелов я получаю кавычки ("")

Ответы [ 3 ]

3 голосов
/ 28 января 2020

Мы можем использовать mutate_at с replace_na

library(dplyr)
library(tidyr)
shad.92 %>% 
       mutate_at(vars(year, Annual), replace_na, '')
# A tibble: 5 x 7
#  year   type                                              September October November December Annual
#  <chr>  <chr>                                                 <dbl>   <dbl>    <dbl>    <dbl> <chr> 
#1 "1992" all age abundance index                                 755     530      463    266   "2014"
#2 ""     adjusted number of fish older than age 0 measured         0       0        0      1   ""    
#3 ""     adjusted total number of fish measured                  565     434      338    136   ""    
#4 ""     percent YOY                                             100     100      100     99.3 ""    
#5 ""     YOY abundance index                                     755     530      463    264   "2012"
2 голосов
/ 28 января 2020

A base решение с использованием replace:

as.data.frame(replace(shad.92, is.na(shad.92), ""))

#>   year                                              type September October
#> 1 1992                           all age abundance index       755     530
#> 2      adjusted number of fish older than age 0 measured         0       0
#> 3                 adjusted total number of fish measured       565     434
#> 4                                            percent YOY       100     100
#> 5                                    YOY abundance index       755     530
#>   November December Annual
#> 1      463      266   2014
#> 2        0        1       
#> 3      338      136       
#> 4      100     99.3       
#> 5      463      264   2012
1 голос
/ 28 января 2020

Если у вас есть "" в tibble, он отображает элементы этого столбца в кавычках. Однако "" пусто. При использовании базовых R data.frame цитаты не печатаются. После запуска кода попробуйте следующее.

as.data.frame(shad.92)

Но если вы хотите напечатать его как kable, kable не должен печатать сам "" (по крайней мере, не на терминале ; Я не пробовал печатать до HTML).

library(knitr)
kable(shad.92)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...