【发布时间】:2016-06-29 04:09:02
【问题描述】:
我有数据集
ID <- c(1,1,1,2,2,2,2,3,3,4,4,4,4,4,4)
x <- c(1,2,3,1,2,3,4,1,2,1,2,3,4,5,6)
y <- c(2,2,3,6,6,4,5, 1,1,5,5,5,2,2,2)
df <- data.frame(ID, x, y)
df
ID x y
1 1 1 2
2 1 2 2
3 1 3 3
4 2 1 6
5 2 2 6
6 2 3 4
7 2 4 5
8 3 1 1
9 3 2 1
10 4 1 5
11 4 2 5
12 4 3 5
13 4 4 2
14 4 5 2
15 4 6 2
如果你看到 ID 1 有 3 行,由第三行的 y 改变 y = 3,所以我想设置 y = 2(与前一行相同的数量), ID 2 在 y = 4 处有 y 改变,我想设置 y = 6 并删除下一行。当每个ID的y个数发生变化时,我们只设置第一行变化与上一行相同,其余的去掉。
表格将是
ID x y
1 1 2
1 2 2
1 3 2
2 1 6
2 2 6
2 3 6
3 1 1
3 2 1
4 1 5
4 2 5
4 3 5
4 4 5
我想不通,你有什么想法,请帮助我,谢谢。
【问题讨论】:
-
我们可以通过使用 for 循环来做到这一点你想在你的 df 中保留 ID 4 x 值 4
-
是的,我们将保留所有重复的行直到下一行更改,ID 4 的 x 是 1,2,3,4。我们检查每个 ID 直到 y 不同,然后设置 y 具有相同的值,如果该 ID 左侧还有更多行,则将其删除
标签: r duplicates subset