在R Studio中过滤并删除长度非16位的ID数据的方法
解决R语言过滤ride_id长度问题
先说说你之前代码的问题:
- 第一段
length(all_trips$ride_id != 16):你是把每个ride_id直接和数字16比大小,得到一堆TRUE/FALSE后取这个向量的长度,结果就是整个数据集的行数,根本不是你要的非16位ID的数量。 - 第二段
length(nchar(all_trips$ride_id !=16)):先做了ride_id !=16的逻辑判断,得到TRUE/FALSE后对这些逻辑值算字符长度(TRUE是4个字符,FALSE是5个),最后取长度,完全偏离需求。
给你几个实用的代码:
- 查看有多少条数据的
ride_id长度不是16位:
sum(nchar(all_trips$ride_id) != 16)
- 过滤出
ride_id长度为16位的有效数据(建议存新变量保留原数据):
all_trips_clean <- all_trips[nchar(all_trips$ride_id) == 16, ] # 若要直接替换原数据(谨慎操作) all_trips <- all_trips[nchar(all_trips$ride_id) == 16, ]
- 单独提取无效行查看:
all_trips_invalid <- all_trips[nchar(all_trips$ride_id) != 16, ]
核心逻辑是:先用nchar()算出每个ride_id的字符长度,再判断这个长度是否等于16,用判断结果筛选行即可。
内容的提问来源于stack exchange,提问作者Raven Stevens
相关产品推荐
相关产品推荐

