如何保持初始行顺序

时间:2018-01-10 12:49:30

标签: r

我已通过包运行此SQL语句:sqldf

SELECT A,B, COUNT(*) AS NUM 
FROM DF
GROUP BY A,B

我有我想要的输出,但我想保留初始行顺序。不幸的是,输出有不同的顺序。

例如:

> DF
   A B   C D
1 11 2 432 4
2 11 3 432 4
3 13 4 241 5
4 42 5   2 3
5 51 5 332 2
6 51 5 332 1
7 51 5 332 1
> sqldf("SELECT A,B,C,D, COUNT (*)  AS NUM
+        FROM DF
+        GROUP BY A,B,C,D")
   A B   C D NUM
1 11 2 432 4   1
2 11 3 432 4   1
3 13 4 241 5   1
4 42 5   2 3   1
5 51 5 332 1   2
6 51 5 332 2   1

正如您所看到的行顺序更改(第5行和第6行)。如果有人可以帮我解决这个问题,那就太好了。

此致

1 个答案:

答案 0 :(得分:2)

如果我们需要在sqldf上使用此功能,请使用粘贴在一起的ORDER.BY names

library(sqldf)
nm <- toString(names(DF))
DF1 <- cbind(rn = seq_len(nrow(DF)), DF)
nm1 <- toString(names(DF1))
fn$sqldf("SELECT $nm, COUNT (*)  AS NUM
    FROM DF1
    GROUP BY $nm ORDER BY $nm1")
#   A B   C D NUM
#1 11 2 432 4   1
#2 11 3 432 4   1
#3 13 4 241 5   1
#4 42 5   2 3   1
#5 51 5 332 2   1
#6 51 5 332 1   2