为R中的火山地图准备数据集

时间:2013-05-15 02:47:59

标签: r function plot threshold

我有以下虚拟数据集:

MYdata = data.frame(fruit = c("apple", "apple", "apple", "apple", "apple", "apple", "apple", "pear", "pear", "pear", "pear", "pear", "pear", "lemon", "lemon", "lemon", "lemon", "lemon", "orange", "orange", "orange", "orange", "plum", "plum", "plum", "plum"), p = c(0.013, 0.018, 0.022, 0.035, 0.001, 0.030, 0.046, 0.031, 0.010, 0.017, 0.035, 0.054, 0.038, 0.038, 0.038, 0.036, 0.042, 0.043, 0.056, 0.062, 0.055, 0.031, 0.023, 0.003, 0.013, 0.009), f = c(3.4, 5.5, 4.4, 3.9, 3.7, 3.0, 1.5, 1.3, 2.4, 1.1, 3.6, 1.4, 1.5, 3.3, 2.0, 1.5, 1.4, 2.1, 4.0, 2.2, 1.7, 3.2, 4.9, 4.4, 2.1, 1.2))

(A)我想添加列“t”。每个单元格中“t”的值基于“p”和“f”中的值:

  

如果p <0.05且f> 2,则在“fruit”下写入相应单元格的内容,否则写入“ns”。

(这对你们来说可能很容易,但我无法理解写作功能)

(B)我想添加列“top”。 “top”栏中每个单元格的内容取决于“t”栏中水果出现的次数。我有兴趣保留“t”中发现的两种最丰富的水果(“ns”不算是水果)。

  

如果“t”单元格中的水果是所有“t”中两个最丰富的水果之一,则将水果名称写入“top”的相应单元格中,否则写入“other”。如果“t”的单元格包含“ns”,则将“ns”写入“top”。

背景:
使用我的真实数据集,我想创建一个火山图(在ggplot2中),我想只对那些通过某个阈值的“水果”进行颜色编码。因此,颜色编码将基于“t”栏中的信息。
因为我有数百个“水果”,所以当我创作情节时,我的传奇空间和颜色已经不多了。因此,我想仅对通过阈值的前10个“果实”进行颜色编码,并将通过阈值的剩余“果实”分组为“其他”。

解决! 部分(A)用巴蒂斯特的剧本解决。 部分(B)通过结合baptiste的脚本和jbaums的脚本来解决:

MYdata = transform(MYdata, top = ifelse(t == "ns", "ns", ifelse(t %in% names(sort(table(t), dec=T))[names(sort(table(t), dec=T))!="ns"][1:2], levels(t)[t], "other")))

谢谢你们!

0 个答案:

没有答案