arr=as.data.frame(rbindlist(df,fill=T))
> arr
ST Code Emp Employee Pay.Code Hours Gross
1 AL 7229 65 S HOURLY 0.00 0.00
2 AL 7229 65 S SALARY 0.00 3060.00
3 AL 7229 65 S PER DIEM 0.00 765.00
4 AL 7229 65 S EXPENSE REIMBURSEMENT 0.00 11.00
5 AL 7229 2 R HOURLY 60.00 720.00
6 CA 42 2 R OVERTIME 3.25 58.50
7 CA 42 3 A HOURLY 80.00 800.00
8 CA 42 3 A OVERTIME 6.25 93.75
9 CA 42 4 N HOURLY 79.25 990.63
10 CA 42 4 N OVERTIME 7.00 131.25
11 CA 42 9 P HOURLY 32.00 352.00
12 CA 42 9 P OVERTIME 1.75 28.88
13 CA 42 10 E HOURLY 72.00 864.00
14 CA 42 10 E OVERTIME 5.00 90.00
15 AL 7229 NA <NA> <NA> NA 23954.00
16 AL 7229 NA <NA> <NA> NA 11092.10
17 GA 7380 NA <NA> <NA> NA 98142.00
18 GA 8380 NA <NA> <NA> NA 11984.00
19 NC 7380 NA <NA> <NA> NA 218129.00
20 NC 8380 NA <NA> <NA> NA 27891.00
21 TN 7380 NA <NA> <NA> NA 28441.00
22 TN 8380 NA <NA> <NA> NA 8348.00
我用
outcome=sqldf("select * from arr where ST = 'AL'")
outcome
总是得到
ST Code Emp Employee Pay.Code Hours Gross
1 AL 7229 65 S HOURLY 0 0
2 AL 7229 65 S SALARY 0 3060
3 AL 7229 65 S PER DIEM 0 765
4 AL 7229 65 S EXPENSE REIMBURSEMENT 0 11
5 AL 7229 2 R HOURLY 60 720
我总是无法抓住15&amp; 16 哪里出错了?
答案 0 :(得分:0)
当我知道错误的模式时,我通常会尝试将所有数据标准化。
在您的情况下,删除空格将解决问题。
arr$ST = strsplit(arr$ST," ")[[1]]
arr$ST = arr$ST[arr$ST!=""]
但是如果你不知道错误的模式你可以使用正则表达式,我不确定sqldf是否能够正则表达式模式(我以前从未使用过sqldf,抱歉),但是如果你可以使用来自SQL语言的正则表达式模式。
PS:
1 - 您可以使用arr[which(arr$ST == "AL"),]
2 - 不要在任何更改之前忘记保存数据。