จากดาต้าเฟรมเช่นนี้
test <- data.frame('id'= rep(1:5,2), 'string'= LETTERS[1:10])
test <- test[order(test$id), ]
rownames(test) <- 1:10
> test
id string
1 1 A
2 1 F
3 2 B
4 2 G
5 3 C
6 3 H
7 4 D
8 4 I
9 5 E
10 5 J
ฉันต้องการสร้างใหม่โดยมีแถวแรกของแต่ละคู่ id / string หาก sqldf ยอมรับรหัส R ภายในแบบสอบถามอาจมีลักษณะดังนี้:
res <- sqldf("select id, min(rownames(test)), string
from test
group by id, string")
> res
id string
1 1 A
3 2 B
5 3 C
7 4 D
9 5 E
มีวิธีแก้ไขสั้น ๆ ในการสร้างคอลัมน์ใหม่เช่น
test$row <- rownames(test)
และเรียกใช้แบบสอบถาม sqldf เดียวกันกับ min (row)?