R语言中如何移除数据框字符列重复值?附报错排查
解决R语言中flights数据框origin列去重的问题
嘿,我来帮你理清楚这个报错的原因和正确的解决方法:
首先看你遇到的报错,其实是两个小问题导致的:
- 拼写错误:你把列名
origin写成了orgin,这就是警告里提示“Unknown or uninitialised column: 'orgin'”的根源; distinct()用法不当:在%>%管道操作中,前面的flights数据框已经被传递到下一个函数里了,不需要再用flights$来指定数据框,直接写列名就可以。
下面给你几种正确的去重写法,根据你的需求选择:
1. 只获取去重后的origin列(单列数据框)
如果你的目标只是得到没有重复值的origin列数据,用下面的代码就行:
flights %>% filter(dep_delay > 10, !is.na(origin)) %>% distinct(origin) # .keep_all默认是FALSE,会只保留origin列
要是你想把结果转换成向量,可以再加一步pull():
flights %>% filter(dep_delay > 10, !is.na(origin)) %>% distinct(origin) %>% pull(origin)
2. 保留其他列,仅对origin列去重(保留每个origin的首行数据)
如果需要保留数据框的其他列,同时确保origin列没有重复值,只保留每个origin第一次出现时的整行数据,就加上.keep_all = TRUE:
flights %>% filter(dep_delay > 10, !is.na(origin)) %>% distinct(origin, .keep_all = TRUE)
简单解释下distinct()的参数:.keep_all默认是FALSE,此时只会保留你指定的去重列;设为TRUE时,会保留该去重值第一次出现对应的所有列数据。
内容的提问来源于stack exchange,提问作者YAnt
相关产品推荐
相关产品推荐

