【发布时间】:2019-10-17 12:17:08
【问题描述】:
我有两个数据框;酱汁和规则。规则有一个名为 fieldname 的列,其中包含酱汁中存在的列名。 rules 有一个名为 fieldvalue 的行,其中包含与酱汁中的列名相关的字段。我想根据规则的字段名和字段值从酱汁中提取数据。
我尝试使用 for 循环,但它们花费的时间太长,并且无法从中获得正确的结果。
> sauce <- data.frame(Type = c("ketchup","mustard","mayo","lite-mayo","ketchup"), Brand = c("Heinz","Publix","Kroger","Kroger","Kroger"))
> rules <- data.frame(fieldname = c("Type","Type","Brand"),
fieldvalue = c("ketchup","lite-mayo","Kroger"),
operator = c("and","or",""),
fielname2 = c("Brand","Brand",""),
fieldvalue2 = c("Heinz","Kroger",""))
我打算索引列名,但使用不同的数据框
sauce[,c(rules$fieldname)]
理想情况下,我希望根据规则数据框从酱汁中获取数据。
例如:字段名:类型和字段值:番茄酱(并且是操作员)应该导致番茄酱亨氏作为输出
【问题讨论】:
-
如果您包含所需的输出会有所帮助。
-
我已经更新了上面的数据框,因为我意识到它们没有画出足够好的画面。 sauce 有 200 条记录和 10 个变量。规则有 40 条记录,其中显示了变量。我试图得到的输出是酱汁的行 1. 其中 Type 是番茄酱,Brand 是 heinz,2. Type 是 lite-mayo 或 Brand 是 Kroger,3. Brand 是 Kroger。所以输出将是:从番茄酱亨氏酱汁中记录 1,在存在 lite-mayo 或克罗格的地方记录 3,4,5,在克罗格存在的地方记录 3,4,5。
标签: r dataframe indexing dynamic