R 根据顺序删除重复项
在R中,我希望删除前两个R 根据顺序删除重复项,r,duplicates,dplyr,R,Duplicates,Dplyr,在R中,我希望删除前两个b和每个a之后的c之后的所有实例(请注意编号)。 我有以下几点: 1 a 2 b 3 c 4 a 5 b 6 c 7 a 8 b 9 c 10 b 11 c 12 a 13 b 14 c 15 c 我希望将其简化为: 1 a 2 b 3 c 4 a 5 b 6 c 7 a 8 b 9 c 12 a 13 b 14 c 如果可能的话,我正在尝试在dplyr管道中执行此操作。 有什么
b
和每个a
之后的c
之后的所有实例(请注意编号)。
我有以下几点:
1 a
2 b
3 c
4 a
5 b
6 c
7 a
8 b
9 c
10 b
11 c
12 a
13 b
14 c
15 c
我希望将其简化为:
1 a
2 b
3 c
4 a
5 b
6 c
7 a
8 b
9 c
12 a
13 b
14 c
如果可能的话,我正在尝试在dplyr
管道中执行此操作。
有什么想法吗?这个怎么样
d <- data.frame(lets = c("a", "b", "c", "a", "b", "c", "a", "b", "c", "b", "c", "a", "b", "c", "c"))
d %>%
mutate(lag1 = lag(lets),
lag2 = lag(lag1)) %>%
filter(is.na(lag2) |
!(lets == lag1 | lets == lag2 | lag1 == lag2)) %>%
select(lets)
lets
1 a
2 b
3 c
4 a
5 b
6 c
7 a
8 b
9 c
10 a
11 b
12 c
d%
突变(lag1=滞后(lets),
lag2=滞后(lag1))%>%
过滤器(is.na(lag2)|
!(let==lag1 | let==lag2 | lag1==lag2))%>%
选择(lets)
让
1A
2 b
3 c
4A
5 b
6 c
7 a
8 b
9 c
10 a
11 b
12 c
一种可能的解决方案:
df = read.table(text="1 a
2 b
3 c
4 a
5 b
6 c
7 a
8 b
9 c
10 b
11 c
12 a
13 b
14 c
15 c",header=F)
library(dplyr)
df %>% mutate(x=cumsum(V2=='a')) %>%
group_by(x) %>%
filter(!duplicated(V2)) %>%
ungroup() %>%
select(-x)
输出:
# A tibble: 12 x 2
V1 V2
<int> <fctr>
1 1 a
2 2 b
3 3 c
4 4 a
5 5 b
6 6 c
7 7 a
8 8 b
9 9 c
10 12 a
11 13 b
12 14 c
#一个tible:12 x 2
V1 V2
11A
2 b
3 c
4 a
5 b
6摄氏度
7 a
8 b
9摄氏度
10 12 a
11 13 b
12 14 c
请注意,每次遇到
a
后,这将删除所有重复的元素。如果您只想删除重复的<代码> b<代码> >和<代码> c>代码>,请考虑:<代码>过滤器(!)(复制(v2)和(v2==b′v2=='c'))< < /代码> 这绝对是非常棒的-谢谢!我不会想到:P:PNo问题,很高兴我能帮上忙!对我来说,这也是一个难题,这就是为什么我喜欢堆栈溢出;)这也行!谢谢大家@Daniel Anderson!我喜欢使用lag:)