2016-05-06 8 views
0

Rスクリプトを作成して、CSV銀行データの概要を確認しようとしています。 私の目標は、すべての費用をさまざまなカテゴリに分類することです。 例えば、私はMcDonaldsとBurger Kingが "resturantsCosts"に入ることを望みます。 Kaisers、Lidl、およびReweの食料品市場の費用は、「foodCompaniesCosts」になります。 Vattenfall、Gasag、およびVodaphoneの購読料は、「subscriptionCosts」になります。CSVファイルをRで処理する

私の現在の難しさは、情報を処理することです。

"01554マクドナルド"、 "REWE251"、 "11379 BURGER KING ALEX BHF"、 "KAISERS TENGELMANN 82139 * DE"、 "KAISERS TENGELMANN 82124 * DE"

: はここに私のCSVファイルからいくつかの問い合わせの例であり、

私の考えは、各質問をリストに分割し、すべての数字を削除し、すべての文字を小さくすることでした。例えば は「KAISERS TENGELMANN 82124 * DEは」次のようになります。 「kaisers」「tengelmann」「*ド」

そして、言葉の一つはそこにあるかどうかを確認するためにさまざまな既成のリストに結果を一致させるために私のアイデアでした。例、foodCompaniesリストには、次の単語が含まれます。 "kaisers"、 "lidl"、 "rewe" foodCompaniesリストには「カイザー」という単語が含まれており、「カイザー」という単語が含まれているため、一致があります。しかし、私はそれを働かせるのが難しいです。 誰かが私を助けることができますか?

EDIT:問題はデータを読み取ることではありません。問題はデータを処理することです。私はすべての企業とコストを読むことができ、彼らは "会社"と "コスト"に格納されています。例えば

temp <- tolower(trimws(gsub('[[:digit:]]+', '', company[i]))) 
temp <- strsplit(temp, " ") 

、変数会社として「82139 * DE KAISERS TENGELMANN」に設定します。それは正しく動作しません以下のとおりです。

"C(\" kaisers \ "\ "tengelmann \"、\ "*デ\")" ここ

は私の完全なコードです:

私は、次のような結果を得ますあなたの forループでは
mydata = read.csv2("mydata.csv", header = TRUE, sep = ";", quote = "\"", 
        dec = ",", fill = TRUE, comment.char = "") 

company = mydata[[6]] 
costs = mydata[[9]] 

foodCompanies = c("kaisers", "lidl", "rewe") 
resturants = c("burger king", "mcdonalds") 
subscriptions = c("vattenfall", "gasag", "vodaphone") 

foodCompaniesCosts = c() 
resturantsCosts = c() 
subscriptionCosts = c() 

for (i in 1:length(company)){ 
    temp <- tolower(trimws(gsub('[[:digit:]]+', '', company[i]))) 
    temp <- strsplit(temp, " ") 

    if(any (temp %in% foodCompanies) == TRUE) {foodCompaniesCosts <- c(foodCompaniesCosts, costs[i]) 
    } else if(any (temp %in% resturants) == TRUE) {resturantsCosts <- c(resturantsCosts, costs[i]) 
    } else if(any (temp %in% subscriptions) == TRUE) {subscriptionCosts <- c(subscriptionCosts, costs[i]) 
    } 
} 

答えて

0

、あなたのif文が始まる前にdata.frameからtempを変換します。具体的には、temp <- data.frame(temp)行を追加します。

関連する問題