我想更换使用的一些变化在数字列的NA mutate_if
和replace_na
如果可能的话,但不能找出语法.
df <-tibble(
first = c("a", NA, "b"),
second = c(NA, 2, NA),
third = c(10, NA, NA)
)
#> # A tibble: 3 x 3
#> first second third
#> <chr> <dbl> <dbl>
#> 1 a NA 10.0
#> 2 <NA> 2.00 NA
#> 3 b NA NA
Run Code Online (Sandbox Code Playgroud)
最终结果应该是:
#> # A tibble: 3 x 3
#> first second third
#> <chr> <dbl> <dbl>
#> 1 a 0 10.0
#> 2 <NA> 2.00 0
#> …
Run Code Online (Sandbox Code Playgroud) 使用查找表中的(正确)值更新/替换主数据集中的NA的最有效方法是什么?这是一个如此常见的操作!类似的问题似乎没有整洁的解决方案.
约束:1)请假设大量缺失值和更大的查找表比给出的示例.所以情况下明智的替换操作将是不切实际的(不case_when
,if_else
等等)
2)查找表没有主数据帧的所有值,只有替换的值.
Tidyverse解决方案的答案更受欢迎.类似的问题似乎没有整洁的解决方案.
library(tidyverse)
### Main Dataframe ###
df1 <- tibble(
state_abbrev = state.abb[1:10],
state_name = c(state.name[1:5], rep(NA, 3), state.name[9:10]),
value = sample(500:1200, 10, replace=TRUE)
)
#> # A tibble: 10 x 3
#> state_abbrev state_name value
#> <chr> <chr> <int>
#> 1 AL Alabama 551
#> 2 AK Alaska 765
#> 3 AZ Arizona 508
#> 4 AR Arkansas 756
#> 5 CA California 741
#> 6 CO <NA> 1100
#> 7 CT <NA> …
Run Code Online (Sandbox Code Playgroud) 我想向数据框的每一行添加一个列表。
# DATA
> df <- tibble(ID = 1:6, x = letters[1:6])
# A tibble: 6 x 2
ID x
<int> <chr>
1 1 a
2 2 b
3 3 c
4 4 d
5 5 e
6 6 f
Run Code Online (Sandbox Code Playgroud)
添加单个值很容易。
df$new.col <- "boo"
# A tibble: 6 x 3
ID x new.col
<int> <chr> <chr>
1 1 a boo
2 2 b boo
3 3 c boo
4 4 d boo
5 5 e boo
6 6 f boo …
Run Code Online (Sandbox Code Playgroud)