【发布时间】:2012-09-30 03:13:44
【问题描述】:
假设我有四个样本:id=1、2、3 和 4,每个样本都有一个或多个测量值:
> a <- data.frame(id=c(1,1,2,2,3,4), value=c(1,2,3,-4,-5,6))
> a
id value
1 1 1
2 1 2
3 2 3
4 2 -4
5 3 -5
6 4 6
我想删除重复项,每个 ID 只保留一个条目 - “值”列的绝对值最大的条目。也就是说,这就是我想要的:
> a[c(2,4,5,6), ]
id value
2 1 2
4 2 -4
5 3 -5
6 4 6
我如何在 R 中做到这一点?
【问题讨论】:
-
您提到“每个 ID 只保留一个条目 - 'value' 列的绝对值最大的那个。”如果有多个条目,期望的行为是什么每个 ID 是否符合该条件?返回两个值,还是其中一个?例如,如果
a[3, 2] <- 4,您想要的输出是什么? -
啊..这是个好问题。 value 列实际上是一个实数而不是整数,并且很可能永远不会完全相等。理想的期望行为可能应该是放弃这两个观察结果,但这可能不会像我说的那样发生。
-
感谢大家的帮助。
标签: r duplicates duplicate-removal