我试图根据一个因素变量的存在删除重复的行。如果重复行中的factor变量显示为 desired (而不是不想要的),我想保留该行并删除另一行。所需的因子有时会显示为第一个重复项,有时会显示为第二个重复项。
此外,一旦弹出所需或不所需时,就有一列开始计数三十天。在没有类型(NA)的情况下,重复标记列也会显示NA。
最后,每个品牌每天应该有1行。
手头的数据示例:
brand date sales orders customers type duplicate_flag
A 10/1/2018 100 5 4 NA NA
A 10/2/2018 150 8 6 desired 1
A 10/2/2018 150 8 6 not desired 1
A 10/3/2018 110 5 4 NA 2
所需的输出:
brand date sales orders customers type duplicate_flag
A 10/1/2018 100 5 4 NA NA
A 10/2/2018 150 8 6 desired 1
A 10/3/2018 110 5 4 NA 2
如果在dplyr中有办法做到这一点,那就太好了。
谢谢!
答案 0 :(得分:2)
以下是一些可用的示例数据。
df <-
data_frame(
Date = c(1,2,2,3,3,4)
, Metric = 1:6
, type = c(NA, "desired", "not desired", "not desired", "desired", "not desired")
)
外观如下:
# A tibble: 6 x 3
Date Metric type
<dbl> <int> <chr>
1 1 1 <NA>
2 2 2 desired
3 2 3 not desired
4 3 4 not desired
5 3 5 desired
6 4 6 not desired
我假设您想根据type
列在每个日期保留一行,但是其他各列可能(也可能没有)彼此不同。 (如果它们之间没有什么不同,我看不出为什么保留哪一行会很重要。)
为此,最简单的方法可能是按type
对数据进行排序(确保要保留的值排在首位-您可能必须将type
更改为具有“期望值”的因子“(如果由于某种原因不是按字母顺序排列的,则将其作为第一级)),然后使用slice
保留第一项。
df %>%
arrange(type) %>%
group_by(Date) %>%
slice(1) %>%
ungroup() %>%
arrange(Date)
返回:
# A tibble: 4 x 3
Date Metric type
<dbl> <int> <chr>
1 1 1 <NA>
2 2 2 desired
3 3 5 desired
4 4 6 not desired
答案 1 :(得分:0)
我假设您的数据框为“ df”
df %>% filter(type != "not desired" | is.na(type))
或
df %>% select(-type) %>% distinct()