如何在R数据框列中删除连续重复的重复项?


通常情况下,重复的值会导致数据中出现重复,如果这些值不太可能对分析结果造成偏差,我们可能希望去除这些值。例如,如果我们有一列定义了一个过程,我们对该过程进行了五次输出,但每次都得到相同的输出,那么我们可能只需要使用一个输出。

示例1

 在线演示

考虑以下数据框:

ID<−1:20
x<−sample(0:2,20,replace=TRUE)
df1<−data.frame(ID,x)
df1

输出

   ID x
1  1  1
2  2  1
3  3  0
4  4  1
5  5  0
6  6  2
7  7  1
8  8  1
9  9  1
10 10 2
11 11 2
12 12 1
13 13 2
14 14 2
15 15 0
16 16 1
17 17 2
18 18 1
19 19 1
20 20 0

删除df1列x中的连续重复项:

Repeated1<−cumsum(rle(as.character(df1$x))$length)
df1[Repeated1,]

输出

  ID  x
2  2  1
3  3  0
4  4  1
5  5  0
6  6  2
9  9  1
11 11 2
12 12 1
14 14 2
15 15 0
16 16 1
17 17 2
19 19 1
20 20 0

示例2

 在线演示

ID<−1:20
y<−sample(1:5,20,replace=TRUE)
df2<−data.frame(ID,y)
df2

输出

  ID y
1 1 1
2 2 5
3 3 1
4 4 2
5 5 5
6 6 1
7 7 2
8 8 1
9 9 1
10 10 4
11 11 4
12 12 2
13 13 3
14 14 4
15 15 5
16 16 4
17 17 1
18 18 1
19 19 5
20 20 4

删除df2列y中的连续重复项:

Repeated2<−cumsum(rle(as.character(df2$y))$length)
df2[Repeated2,]

输出

  ID y
1 1 1
2 2 5
3 3 1
4 4 2
5 5 5
6 6 1
7 7 2
9 9 1
11 11 4
12 12 2
13 13 3
14 14 4
15 15 5
16 16 4
18 18 1
19 19 5
20 20 4

示例3

 在线演示

ID<−1:20
z<−sample(11:13,20,replace=TRUE)
df3<−data.frame(ID,z)
df3

输出

  ID z
1 1 12
2 2 13
3 3 13
4 4 13
5 5 11
6 6 12
7 7 12
8 8 13
9 9 12
10 10 13
11 11 13
12 12 12
13 13 12
14 14 13
15 15 13
16 16 13
17 17 12
18 18 12
19 19 12
20 20 13

删除df3列z中的连续重复项:

Repeated3<−cumsum(rle(as.character(df3$z))$length)
df3[Repeated3,]

输出

  ID z
1 1 12
4 4 13
5 5 11
7 7 12
8 8 13
9 9 12
11 11 13
13 13 12
16 16 13
19 19 12
20 20 13

更新于:2020年11月7日

151 次查看

启动您的职业生涯

完成课程获得认证

开始
广告