使用带布尔值的查找表计算R中的变量
我有两个数据集:一个数据集具有产品成分的二分法变量(使用带布尔值的查找表计算R中的变量,r,R,我有两个数据集:一个数据集具有产品成分的二分法变量(m),另一个查找表使用布尔术语将成分映射到产品标签(例如,在合并多个变量后成分是TRUE还是FALSE) 例如,m可能看起来像: id milk cheese eggs 001 TRUE TRUE FALSE 002 FALSE FALSE TRUE 003 FALSE FALSE FALSE label boolean ingredients vegan FALSE
m
),另一个查找表使用布尔术语将成分映射到产品标签(例如,在合并多个变量后成分是TRUE
还是FALSE
)
例如,m
可能看起来像:
id milk cheese eggs
001 TRUE TRUE FALSE
002 FALSE FALSE TRUE
003 FALSE FALSE FALSE
label boolean ingredients
vegan FALSE milk, cheese, eggs
gluten_free FALSE wheat, rye, barley
然后查找表ingred
可能如下所示:
id milk cheese eggs
001 TRUE TRUE FALSE
002 FALSE FALSE TRUE
003 FALSE FALSE FALSE
label boolean ingredients
vegan FALSE milk, cheese, eggs
gluten_free FALSE wheat, rye, barley
所需的输出是m
将包含一个新字段,该字段在将配料的布尔值(由列名表示)与查找表中逗号分隔的值匹配后合并TRUE/FALSE
id milk cheese eggs wheat barely rye vegan gluten_free
001 TRUE TRUE FALSE FALSE FALSE FALSE FALSE TRUE
002 FALSE FALSE TRUE FALSE TRUE FALSE FALSE FALSE
003 FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE
我一般认为,
ingred
中逗号分隔的值需要转换成矩阵,但我不确定如何组合m
和ingred
以获得所需的输出。谢谢你的帮助 Abase R
选项是通过分隔符(“,”
)将第二个数据集的“成分”列拆分为向量的列表,使用Map
在列表
以及“布尔”列的相应元素上循环,根据拆分的名称对第一个数据集的列进行子集,检查其是否不等于“布尔”值,按行进行求和(!
)
df1[df2$label]您的ingred
中是否有更多行,如果有,是否会有其他组合values@akrun是-我将修改我的示例。因为我正在使用的数据集是专有的并且非常复杂,所以我简化了示例,但将添加更多纹理来改进问题。