使用dplyr管道函数处理R数据框:去重、删NA行及行数查询
R数据框处理:行数统计与dplyr管道实现
首先直接给出结论:处理后的数据框会包含 2行。
接下来是对应的dplyr管道实现方案:
我们需要结合dplyr的filter()和distinct()函数,注意执行顺序——先过滤掉num列含NA的行,再对name列去重(默认保留每组的第一行),就能得到期望结果:
library(dplyr) # 初始化数据框 data <- data.frame(name=c("A", "B", "A", "C", "A", "B", "D"), num = c(1,NA, 0,NA, 1, NA, 0)) # 单一管道处理 processed_data <- data %>% filter(!is.na(num)) %>% # 移除num列包含NA的行 distinct(name, .keep_all = TRUE) # 按name去重,同时保留整行数据
执行后processed_data的输出为:
name num 1 A 1 2 D 0
补充说明:如果调换执行顺序(先去重再过滤),最终结果也会是2行,但先过滤再去重的效率更高——因为提前减少了需要处理的数据量,更符合数据处理的最佳实践。
内容的提问来源于stack exchange,提问作者Avijit Mallick
相关产品推荐
相关产品推荐

