如何解决如何删除在R中具有重复项并满足另一个条件的行?
我不知道这是否是一个过于具体的问题,但我希望删除一列中有重复项并满足条件的行。
具体来说,我想删除“host_id”(数字)列中的重复观察值之一,“reviews_per_month”(数字)列中的值最低。
换句话说,如我的报告中所述:“ 由于一个主机可以有多个列表,因此将过滤出现超过一次的主机ID。每月评论最多的主机ID列表用于分析”。
我尝试了很多使用duplicated()、filter()、ifelse()、casewhen()等的方法,但它似乎不起作用。有谁知道如何开始?提前致谢!
解决方法
我们可以使用slice_max
。按“host_id”分组,slice
行,其中 reviews_per_month
是 max
library(dplyr)
df %>%
group_by(host_id) %>%
slice_max(reviews_per_month)
或者如果是单独去除min
观察
df %>%
group_by(host_id) %>%
filter(reviews_per_month != min(reviews_per_month,na.rm = TRUE))
,
试试这个:
df <- data.frame(x = c("a","a","b","b"),y = c(1,2,1)) # Test data
library(dplyr)
df %>%
distinct(x,.keep_all = T)
# Wrong!
df %>%
arrange(-y) %>%
distinct(x,.keep_all = T)
# This is how you want to have it
更详细一点:您只需要在 host_id
变量(上面示例中的 x
)中有一个条目,因此您需要使用 distinct()
。但是 distinct()
只保留输入到 distinct 中的变量的第一次观察(在您的情况下:host_id
),因此您必须首先以递减方式对数据进行排序。我在示例中使用 arrange(-y)
,您应该将 y
替换为 reviews_per_month
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。