循环遍历DF,在列中找到与列表匹配的值,为找到的每个列表值添加总计并打印

时间:2016-04-12 17:11:42

标签: r dataframe

  1. 我有一个名为df的数据框,其中包含变量AllCustomerName和sum.of.FY.Total。第一列“AllCustomerName”包含所有客户端的列表。我有一个单独的列表,其中包含我需要信息的客户的名称。下面的代码用于遍历数据框列AllCustomerName,搜索与列表值相等的所有值,并分别为每个列表观察添加所有值。

    y <- list("client 1", "client 2", "client 3") for ( i in y){ if ( df$AllCustomerName == i ){ sum(df$Sum.of.FY.Total) } }

  2. 当我运行代码时,我会收到警告说“条件长度> 1且只使用第一个元素”

    谢谢

1 个答案:

答案 0 :(得分:0)

可以使用data.table

完成此操作
library(data.table)
setDT(df)[AllCustomerName %chin% unlist(y), .(Sum = sum(Sum.of.FY.Total)), 
                by = AllCustomerName]