2016-12-30 3 views
2

私はいくつかの列を持つデータフレームSCCを持っています。これらの列から、「石炭」という単語が含まれている行をすべて見つけたいと思っていました。リストのすべての要素を結合し、一意の値のみを保持します

私はそうする grep機能を使用して、次のコマンドを使用して、変数 xで格納された結果(リスト)

:データフレームに単語「石炭」が発生した場所を今

x <- sapply(SCC, grep, pattern="coal", ignore.case=T) 

xは私に語りました、それはリストであり、このリストの第4および第9の要素が以下に示されている。

> x[4] 
$EI.Sector 
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 
[17] 17 18 19 20 21 22 23 24 25 26 27 28 29 30 80 81 
[33] 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 
[49] 99 100 101 102 103 104 105 106 107 108 109 110 111 112 161 162 
[65] 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 
[81] 179 180 181 182 183 184 185 215 221 433 434 435 447 448 462 463 
[97] 527 528 529 

> x[9] 
$SCC.Level.Three 
    [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 
[14] 14 15 16 17 18 19 20 21 79 80 81 83 84 
[27] 85 86 87 88 89 90 91 92 93 94 95 96 97 
[40] 98 99 100 101 102 103 104 105 161 162 163 164 165 
[53] 166 167 168 169 170 171 172 173 174 175 176 177 178 
[66] 179 180 242 433 434 435 447 448 462 463 477 478 527 
[79] 528 529 2220 2221 2222 2223 2224 2496 2497 2498 2499 2500 2501 
[92] 2502 2503 2504 2505 2506 2591 2592 4520 4673 4674 4675 4676 4677 
[105] 4678 4679 4680 7415 7416 7417 7418 7419 7420 7421 7422 7423 7424 
[118] 7425 7426 7427 7428 7429 7430 7431 7432 7433 7434 7435 7436 7437 
[131] 7438 7439 7440 7441 7442 7443 7444 7445 7446 7447 7448 7449 7450 
[144] 7451 7452 7453 7454 7455 7456 7457 7458 7459 7460 7461 7462 7991 
[157] 7992 7993 7994 7995 7996 7997 7998 7999 8000 8001 8002 8003 8004 
[170] 8005 8006 8007 8008 8009 9054 9055 9056 9057 9058 9059 9060 

質問1

私は1つのインデックスにx[4]x[9]を組み合わせたいです。どのように進むべきですか?私は今、以下のコードを使用していますが、より簡潔なコマンドがありますか?

y <- x[[4]] %in% intersect(x[[4]], x[[9]]) 
z <- c(x[[4]][!y], x[[9]]) 

> sort(z) 
    [1] 1 2 3 4 5 6 7 8 9 10 11 12 
[13] 13 14 15 16 17 18 19 20 21 22 23 24 
[25] 25 26 27 28 29 30 79 80 81 83 84 85 
[37] 86 87 88 89 90 91 92 93 94 95 96 97 
[49] 98 99 100 101 102 103 104 105 106 107 108 109 
[61] 110 111 112 161 162 163 164 165 166 167 168 169 
[73] 170 171 172 173 174 175 176 177 178 179 180 181 
[85] 182 183 184 185 215 221 242 433 434 435 447 448 
[97] 462 463 477 478 527 528 529 2220 2221 2222 2223 2224 
[109] 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2591 
[121] 2592 4520 4673 4674 4675 4676 4677 4678 4679 4680 7415 7416 
[133] 7417 7418 7419 7420 7421 7422 7423 7424 7425 7426 7427 7428 
[145] 7429 7430 7431 7432 7433 7434 7435 7436 7437 7438 7439 7440 
[157] 7441 7442 7443 7444 7445 7446 7447 7448 7449 7450 7451 7452 
[169] 7453 7454 7455 7456 7457 7458 7459 7460 7461 7462 7991 7992 
[181] 7993 7994 7995 7996 7997 7998 7999 8000 8001 8002 8003 8004 
[193] 8005 8006 8007 8008 8009 9054 9055 9056 9057 9058 9059 9060 

質問2

SCCで単語 "石炭" と他の列があります。 xの要素の長さは、SCCに「石炭」という語が使用されている場所と考えられています。行インデックスを生成するためにxのすべての要素を結合する単一のコマンドはありますか?

sapply(x, NROW) 
       SCC  Data.Category   Short.Name 
        0     0     239 
      EI.Sector  Option.Group   Option.Set 
       99     0     0 
     SCC.Level.One  SCC.Level.Two  SCC.Level.Three 
        0     0     181 
    SCC.Level.Four    Map.To Last.Inventory.Year 
       126     0     0 
     Created_Date  Revised_Date   Usage.Notes 
        0     0     0 
(答えにコメントをする)
+0

組合、上の組合を行う方法がジョブがあるんされるすべてのxの要素は同時に?ありがとう – Bhail

+0

それらのすべて。 union()はベクトルにだけかかりますが、xのすべての要素を引数として取る別の関数がありますか? – Bhail

答えて

3

あなたはz <- union(x[[4]], x[[9]])をやっていませんか?

unionジョブは、xのすべての要素に対して同時にユニオンを行う方法はありますか?

union()は、2つのベクトルのみを取ります。 xのすべての要素を引数とする別の関数がありますか?あなたがunionを使用して滞在したい場合我々は単に

unique(unlist(x)) 

を行うことができます

は、実行します。

Reduce(union, x) 
関連する問題