我将以下数据集(dat.an)作为.csv
文件:
Animal,Bias,Colour
Frog,2,"#0000FF"
Frog,1,"#FFFFFF"
Dog,16,"#FFFFFF"
Cat,2,"#FF0000"
Frog,3,"#FF0000"
Cat,8,"#0000FF"
Dog,12,"#0000FF"
Cat,8,"#FFFFFF"
Cat,12,"#0000FF"
Dog,2,"#0000FF"
我想根据Animal
进行分组,并生成一个加权平均值Colour
,其中权重在bias
列中。
我已经做到了:
library(tidyverse)
dat.an %>%
group_by(Animal)
没有as.colour
选项来处理十六进制颜色。所以我不知道如何进行。
2条答案
按热度按时间oxalkeyp1#
您可以执行以下操作:
在第一个
transmute()
中,十六进制代码分隔为0到255和Bias到weight之间的rgb值。然后将weight乘以rgb并将rgb和weight按
Animal
分组并将Animal
列带回(select(Animal, everything())
),然后将每行的RGB除以weight,最后将RGB转换为十六进制。还有一些其他的方法可以做到这一点,但我认为这是学习R的好方法。new_df是这样的:
91zkwejq2#
使用
data.table
结果