Me gustaría seleccionar para cada uno ID
los dos valores más cercanos de Cq
. Pensé que lo había descubierto, pero depende de la posición de la fila ...
Aquí hay un ejemplo de la forma de mi conjunto de datos:
df <- data.frame(ID = c("A","A","A","B","B","B","C","C","C"),
Cq = c(34.32,34.40,34.31,31.49,31.40,31.49,31.22,31.31,31.08))
ID Cq
1 A 34.32
2 A 34.40
3 A 34.31
4 B 31.49
5 B 31.40
6 B 31.49
7 C 31.22
8 C 31.31
9 C 31.08
Y lo que probé
df4 <-df %>%
group_by(ID) %>%
arrange(Cq) %>%
mutate(diffvals= Cq - lag(Cq)) %>%
filter(row_number() == 1 | row_number() == 2)
#Output
ID Cq diffvals
1 A 34.31 NA
2 A 34.32 0.0100
3 B 31.40 NA
4 B 31.49 0.0900
5 C 31.08 NA
6 C 31.22 0.14
Y la salida esperada
ID Cq
1 A 34.32
2 A 34.31
3 B 31.49
4 B 31.49
5 C 31.22
6 C 31.31
He intentado ordenar mi conjunto de datos antes, pero no cambia nada. También intenté usar, filter(diffvals=wich.min==diffvals)
pero no sé cómo extraer los dos más pequeños.
Si tienes alguna idea, ¡me ayudaría mucho!
Gracias por adelantado