【发布时间】:2016-04-12 17:11:42
【问题描述】:
-
我有一个名为 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) } }
当我运行代码时,我会收到警告说“条件的长度 > 1,并且只会使用第一个元素”
谢谢
【问题讨论】:
-
所以您正在尝试编写自己的
merge版本?也许你可以做一个可重复的例子? There are great tips here。模拟数据或与dput()共享。 -
请考虑删除您的 rstudio 标签。 R 和 rstudio 是不同的软件,您的问题与 rstudio 无关。
-
或者你可能想要
aggregate(sum.of.FY.Total ~ AllCustomerName, FUN = sum, data = subset(df, AllCustomerName %in% y))。 -
为什么不只是子集 df where
df$AllCustomerName %in% y然后group_by AllCustomerName和summarise -
@Imo 你是对的。不确定如何/为什么标记 rstudio。