首页 > 解决方案 > 使用 Dplyr 使用另一列中的相应值填充空单元格

问题描述

数据框:

a = c("a", "", "c", "", "e")
b = c(1, 2, 3, 4, 5)
c = c("g", "h", "i", "j", "k")

df = data.frame(a,b,c)

当“a”为空时,如何使用 dplyr 用“c”列中的相应值填充“a”列。我知道如何使用 data.table 来做到这一点。

谢谢你。

标签: rdplyrtidyverse

解决方案


这可以通过mutate和来完成ifelse。请注意,我添加stringsAsFactors = FALSE以避免在创建数据框时创建因子列,因为在这种情况下处理字符更容易。

a <- c("a", "", "c", "", "e")
b <- c(1, 2, 3, 4, 5)
c <- c("g", "h", "i", "j", "k")

df <- data.frame(a,b,c, stringsAsFactors = FALSE)

library(dplyr)

df2 <- df %>% mutate(a = ifelse(a %in% "", c, a))
df2
#   a b c
# 1 a 1 g
# 2 h 2 h
# 3 c 3 i
# 4 j 4 j
# 5 e 5 k

推荐阅读