Tôi muốn chọn cho mỗi ID
hai 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