R语言中如何存储大数据集中仅出现一次的wayId对应行?
保存wayId仅出现一次的行的方法
嘿,我来帮你搞定这个问题!你已经通过代码筛选出了wayId重复出现的行,要存储那些被移除的、wayId仅出现一次的数据,只需要把筛选逻辑反过来就行,这里有几种简单的实现方式:
方法1:直接对现有条件取反
你原来的代码是保留至少出现两次的wayId对应的行,我们只需要用!取反这个条件,就能得到仅出现一次的行:
# 提取wayId仅出现一次的行 single_wayId_rows <- OrderTraffic[!(duplicated(OrderTraffic$wayId, fromLast = FALSE)| duplicated(OrderTraffic$wayId, fromLast = TRUE)),] # 保存到文件(示例:保存为CSV) write.csv(single_wayId_rows, "single_wayId_data.csv", row.names = FALSE) # 或者保存为R专属格式,方便后续加载 save(single_wayId_rows, file = "single_wayId_data.RData")
原理:duplicated(..., fromLast=FALSE)标记除了第一次出现外的重复行,duplicated(..., fromLast=TRUE)标记除了最后一次出现外的重复行,两者取或就是所有重复出现过的行;取反后就剩下那些从未被标记为重复的行——也就是wayId仅出现一次的行。
方法2:用统计次数筛选(更直观)
先统计每个wayId的出现次数,再筛选出次数为1的记录,逻辑更清晰:
# 统计每个wayId的出现次数 way_counts <- table(OrderTraffic$wayId) # 提取出现次数为1的wayId对应的行 single_wayId_rows <- OrderTraffic[OrderTraffic$wayId %in% names(way_counts[way_counts == 1]),] # 保存数据(同上) write.csv(single_wayId_rows, "single_wayId_data.csv", row.names = FALSE)
方法3:用dplyr包(tidyverse风格)
如果你习惯用tidyverse工具链,这个写法更简洁:
library(dplyr) # 分组筛选出每组(wayId)仅一行的记录 single_wayId_rows <- OrderTraffic %>% group_by(wayId) %>% filter(n() == 1) %>% ungroup() # 保存数据 write_csv(single_wayId_rows, "single_wayId_data.csv") # dplyr的write_csv更高效
不管用哪种方法,得到single_wayId_rows后,你就可以根据需求把它保存到本地文件,或者继续后续的分析啦~
内容的提问来源于stack exchange,提问作者Shivam
相关产品推荐
相关产品推荐

