【问题标题】:Processing a CSV file in R在 R 中处理 CSV 文件
【发布时间】:2016-05-06 17:49:52
【问题描述】:

我正在尝试制作一个 R 脚本来更好地了解我的 CSV 银行数据。 我的目标是将我所有的成本分成不同的类别。 例如,我希望麦当劳和汉堡王进入“resturantsCosts”。 Kaisers、Lidl 和 Rewe 的食品市场成本将转到“foodCompaniesCosts”。 Vattenfall、Gasag 和 Vodaphone 的订阅费用应计入“订阅费用”。

我现在的困难是处理信息。 以下是我的 CSV 文件中的一些查询示例:

“01554 MCDONALDS”、“REWE251”、“11379 汉堡王 ALEX BHF”、“KAISERS TENGELMANN 82139*DE”、“KAISERS TENGELMANN 82124*DE”

我的想法是将每个查询拆分为一个列表,删除所有数字,并使所有字母变小。 例如“KAISERS TENGELMANN 82124*DE”将是: “凯撒” “腾格曼” “*德”

然后我的想法是将结果匹配到不同的预制列表中,以查看其中是否有单词之一。例如,foodCompanies 列表包含以下词:“kaisers”、“lidl”、“rewe”。 因为 foodCompanies 列表包含单词“kaisers”而查询包含单词“kaisers”,所以会有匹配项。但是,我很难让它工作。 有人可以帮我吗?

编辑:问题不在于读取数据。问题是处理数据。我可以读取所有公司和成本,它们存储在“公司”和“成本”中。以下是无法正常工作的:

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

例如,将“KAISERS TENGELMANN 82139*DE”设置为变量公司。我得到以下结果:

"c(\"kaisers\", \"tengelmann\", \"*de\")"

这是我的完整代码:

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])
  }
}

【问题讨论】:

    标签: r csv


    【解决方案1】:

    在您的for 循环中,在您的if 语句开始之前将temp 转换为data.frame。具体来说,添加行temp &lt;- data.frame(temp)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-18
      • 2022-01-27
      • 2018-01-22
      • 2020-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多