将for循环与元字符组合在一起

时间:2015-06-23 15:36:41

标签: r

我正在编写一个for循环,用于检查特定列中的值是否与预定义列表匹配。

所以它有点像这样:

 money <- read.csv2("money.csv", header = T)
 #set counter
 count_financial = 1

 #set list
 financial_items <- c("bank", "ABN Amro")

 for (i in 1:nrow(money)) {
  if(money$Description[i] in financial_items ) {
   count_financial = count_financial + 1
  }
 }

它现在正在工作但我实际上想稍微调整一下并使用元字符。所以我只能找到说“银行”或“荷兰银行”的项目,还有“银行成本”或“荷兰银行交易”的行。

有关我如何做到这一点的任何想法?

2 个答案:

答案 0 :(得分:0)

你可以尝试

filtered <- money[grep("bank|ABN Amro",money$Description,ignore.case=TRUE),]
count_financial <- nrow(filtered)

答案 1 :(得分:0)

尝试:

length(financial_items %in% money$Description)

但是如果你打算使用循环:

for (i in 1:nrow(money)) {
  if(money$Description[i] %in% financial_items ) {
   count_financial = count_financial + 1
  }
 }

<强>更新

重新阅读问题后,我认为您正在寻找:

length(grep("bank|abn amro", money$Description, ignore.case=TRUE))