以下是我的数据
data
date number value
2016-05-05 1 5
2016-05-05 1 6
2016-05-06 2 7
2016-05-06 2 8
2016-05-07 3 9
2016-05-08 4 10
2016-05-09 5 11
当我使用以下命令时,
data %>% groupby(date, number) %>% summarize(count = n())
我得到以下内容,
date number count
2016-05-05 1 2
2016-05-06 2 2
2016-05-07 3 1
2016-05-08 4 1
2016-05-09 5 1
现在我想过滤掉大于1的计数对应的条目。我想删除计数大于1的组合条目。我的输出应该如下所示,
data
date number value
2016-05-07 3 9
2016-05-08 4 10
2016-05-09 5 11
其中前四个条目已被过滤掉,因为它的计数大于1。有人可以帮我这么做吗?或者给出一些与之相关的想法?
答案 0 :(得分:3)
我们可以在按'date','number'分组后使用filter
并检查行数(n()
)是否等于1,并将这些行保留为filter
命令。
library(dplyr)
data %>%
group_by(date, number) %>%
filter(n() ==1)
# date number value
# <chr> <int> <int>
#1 2016-05-07 3 9
#2 2016-05-08 4 10
#3 2016-05-09 5 11
仅使用data.table
library(data.table)
setDT(data)[, if(.N == 1) .SD , .(date, number)]
或base R
data[with(data, ave(number, number, date, FUN = length) ==1),]