r - 如果变量具有重复值,则从数据框中删除组
问题描述
我想问一下是否有一种方法可以通过以下方式使用 dplyr (或其他方式)从数据框中删除组。假设我有一个按变量 1 分组的以下形式的数据框:
Variable 1 Variable 2
1 a
1 b
2 a
2 a
2 b
3 a
3 c
3 a
... ...
我只想删除变量 2 中具有两个连续相同值的组。即在上表中,它将删除第 2 组,因为有值 a、a、b,但没有组 c,其中 a、c、a。所以我会得到下面的桌子?
Variable 1 Variable 2
1 a
1 b
3 a
3 c
3 a
... ...
解决方案
要测试连续相同的值,您可以将一个值与该列中的前一个值进行比较。在dplyr
中,这是可能的lag
。(您可以使用 . 与下一个值进行比较来做同样的事情lead
。结果是一样的。)
按 对数据进行分组variable1
,得到 的lag
,variable2
然后将该组中这些重复项的数量相加。然后只过滤没有重复的组。之后,随意删除dupesInGroup
列。
library(tidyverse)
df %>%
group_by(variable1) %>%
mutate(dupesInGroup = sum(variable2 == lag(variable2), na.rm = T)) %>%
filter(dupesInGroup == 0)
#> # A tibble: 5 x 3
#> # Groups: variable1 [2]
#> variable1 variable2 dupesInGroup
#> <int> <chr> <int>
#> 1 1 a 0
#> 2 1 b 0
#> 3 3 a 0
#> 4 3 c 0
#> 5 3 a 0
由reprex 包(v0.2.0) 于 2018 年 5 月 10 日创建。
推荐阅读
- python - TKinter syntax to creat widget
- c# - The name 'AddEntityFrameworkStores' does not exist in the current context
- tensorflow - 安装tensorflow哪个更好
- javascript - 获取 json 数据到状态数组
- android - Android Studio logcat 仅显示 Firebase Analytics
- apache - 包含端口的 http_host 的 apache 重写规则
- c++ - 如何不在 usigned short int 的二进制表示的开头打印零?
- python - 如何在 python 中清除 mmap 字节数组
- c - 如何查看是否已到达文件开头?
- python - IndexError: list index out of range ,同时在python的列表中查找第一个不连续的数字