用列表替换 tibble 中的 NA 值
Replace NA values in a tibble with a list
我有一个小标题,其中一列的值都是 NA。
我有一个值列表,我想用它来替换 NA 值。
我正在寻找一种整洁的(如果可能的话)方法来用列表中的值替换 NA 值。
我看过一些看起来可能有用的答案,但问题和答案太复杂了,我无法适应。
一两个小时的谷歌搜索都没有为我打开灯。
这是一个简单的例子:
PersonName <- c("Bob", "John", "Harry")
Phone <- c(NA,NA,NA)
t <- tibble(PersonName, Phone)
numbers <- c("555-1212", "555-1234", "555-7856")
我无法创建必要的代码来生成示例,但我希望能够将每个 Phone 列中的 NA 替换为列表中的数字, 依次
假设'Phone'中NA
的个数等于'numbers'length
,可以用replace
加上逻辑条件
t1 <- t %>%
mutate(Phone = replace(Phone, is.na(Phone), numbers))
t1
# A tibble: 3 x 2
# PersonName Phone
# <chr> <chr>
#1 Bob 555-1212
#2 John 555-1234
#3 Harry 555-7856
更新
根据与 OP 的讨论,我们似乎只需要更新与另一列中的值相对应的列的一部分行
gNodes2 <- gNodes %>%
mutate(DataType = replace(DataType, NodeType == "column", numbers))
假设与上面相同 (length(Phone)
= length(numbers)
) 但 cbind()
和 transmute()
:
t <- cbind(t, numbers) %>% transmute(PersonName, Phone = numbers)
t
# PersonName Phone
#1 Bob 555-1212
#2 John 555-1234
#3 Harry 555-7856
我有一个小标题,其中一列的值都是 NA。 我有一个值列表,我想用它来替换 NA 值。 我正在寻找一种整洁的(如果可能的话)方法来用列表中的值替换 NA 值。 我看过一些看起来可能有用的答案,但问题和答案太复杂了,我无法适应。
一两个小时的谷歌搜索都没有为我打开灯。 这是一个简单的例子:
PersonName <- c("Bob", "John", "Harry")
Phone <- c(NA,NA,NA)
t <- tibble(PersonName, Phone)
numbers <- c("555-1212", "555-1234", "555-7856")
我无法创建必要的代码来生成示例,但我希望能够将每个 Phone 列中的 NA 替换为列表中的数字, 依次
假设'Phone'中NA
的个数等于'numbers'length
,可以用replace
加上逻辑条件
t1 <- t %>%
mutate(Phone = replace(Phone, is.na(Phone), numbers))
t1
# A tibble: 3 x 2
# PersonName Phone
# <chr> <chr>
#1 Bob 555-1212
#2 John 555-1234
#3 Harry 555-7856
更新
根据与 OP 的讨论,我们似乎只需要更新与另一列中的值相对应的列的一部分行
gNodes2 <- gNodes %>%
mutate(DataType = replace(DataType, NodeType == "column", numbers))
假设与上面相同 (length(Phone)
= length(numbers)
) 但 cbind()
和 transmute()
:
t <- cbind(t, numbers) %>% transmute(PersonName, Phone = numbers)
t
# PersonName Phone
#1 Bob 555-1212
#2 John 555-1234
#3 Harry 555-7856