Tôi muốn chọn cho mỗi IDhai giá trị gần nhất của Cq. Tôi nghĩ tôi đã tìm ra nó, nhưng nó phụ thuộc vào vị trí hàng ...
Đây là một ví dụ về hình thức của bộ dữ liệu của tôi:
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
Và những gì tôi đã cố gắng
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
Và kết quả mong đợi
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
Tôi đã thử sắp xếp dữ liệu của mình trước đây, nhưng nó không thay đổi gì cả. Tôi cũng đã thử sử dụng filter(diffvals=wich.min==diffvals)nhưng tôi không biết làm thế nào để trích xuất hai cái nhỏ nhất.
Nếu bạn có bất kỳ ý tưởng, nó sẽ giúp tôi rất nhiều!
Cảm ơn trước