【发布时间】:2015-05-26 19:15:42
【问题描述】:
我有这个 csv 表,我需要在每列的 0 和 1 之间重新调整数据。也就是说,任何给定列的最小值将为 0,最高值为 1,所有其他值将相应地线性缩放。这是我的脚本:
tableau <- read.csv(text="Net,B,C,D,E (e),F (f)
a,1.88,0.15,0.6,10,90
b,2.05,0.23,0.51,55,80
c,2.09,0.29,0.4,58,88
d,2.07,0.52,0.36,80,84
e,2.13,0.3,0.27,7,90")
tableau.m <- melt(tableau)
tableau.m <- ddply(tableau.m, .(variable), transform,rescale = rescale(value))
问题在于第一段并不完全正确:除最后两列外,应按列进行重新调整:我需要根据最低值一起重新调整“E.e”和“F.f”两列,以及两列中的最大值。也就是说,仅对于这些列,而不是其他列,最低值应为 7(显示为白色),最高值应为 90(显示为深蓝色)。
因此,在 F.f 列中,所有单元格都应显示为深蓝色。
有没有可能用 plyr 做到这一点?
(在此示例中,B 列应读取为 2.13 为白色,1.88 为深蓝色,并且 2.07、2.09、2.05 的阴影相应缩放。另一列应保持不变。)
【问题讨论】: