r - 根据因子变量删除 R 中的重复行
问题描述
我正在尝试根据因子变量的存在删除重复的行。如果重复行中的因子变量显示为desired,而不是not 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 中做到这一点,那就太好了。
谢谢!
解决方案
以下是一些可用的示例数据。
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
推荐阅读
- c# - 在python中实现c#解密客户端的问题
- jquery - 如何使用类在 div 中使用输入的值
- ecmascript-6 - 如何在 ESM 中导入 UMD?
- reactjs - Redux/React:每个下拉选项都会生成不同数量的字段,我是否需要为每个选项设置一个 action/reducer?
- python - 我尝试在 mac 上安装 pip install mysqlclient 出现一些错误?
- php - 为什么在 setasign 中更改源文件时出现“空响应”?
- c++ - 如何在 std::vector 中找到 std::pair 的第二个元素的最大值?
- sql - 从给定的表中计算失败百分比
- javascript - javascript ajax 中 Webmethod 和 Alert 的返回值
- bash - Sed 命令(未终止的 's' 命令)