我已通过包运行此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行)。如果有人可以帮我解决这个问题,那就太好了。
此致
答案 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