r - 使用 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 来做到这一点。
谢谢你。
解决方案
这可以通过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
推荐阅读
- python - 解析包含逻辑的字符串以创建 Django Q 对象
- angular - Angular 5+等待返回承诺的服务
- ios - xamarin.forms webview.focused 事件在 Android 上引发,但不在 iOS 上
- android - 避免从改造响应中将空 POJO 对象添加到已解析的数组中
- mootools - 使用 javascript API 而不是 REST 计算矩阵
- python - 如何在 PySpark 中加入两个数据框时解决重复的列名?
- vue.js - 如何在 vue good table 远程模式下以编程方式选择所有(不仅从第一页)行?
- c# - 将通用列表转换为通用 IEnumerable
- wordpress - 使用 ansible 在 Centos7 上设置 Wordpress
- laravel - Laravel 单元测试