Me gustaría seleccionar para cada uno IDlos 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
