【发布时间】:2017-05-16 18:58:41
【问题描述】:
我有需要按阈值分类的 data.frame 列表,最终需要按文件栏的不同类别获取堆栈栏图。但是,在我的 data.frame 列表中,有些行是重复的,我需要在某些图中显示这些重复的行,而且这些重复的行也应该被删除并显示另一个图。因为,保留、删除这些不同类别的重复行,可以提供不同的洞察力来理解结果。根据堆栈条图的名称,我打算保留和删除某些类别中的这些重复行。我很难按照自己的意愿获得预期的情节。任何人都可以告诉我如何轻松实现这一点吗?如何准备绘图数据以获得满足我需要的绘图?任何想法 ?
可重现的data.frame:
Qualified <- list(
hotan = data.frame( begin=c(7,13,19,25,31,37,43,49,55,67,79,103,31,49,55,67),
end= c(10,16,22,28,34,40,46,52,58,70,82,106,34,52,58,70),
pos.score=c(11,19,8,2,6,14,25,10,23,28,15,17,6,10,23,28)),
aksu = data.frame( begin=c(12,21,30,39,48,57,66,84,111,30,48,66,84),
end= c(15,24,33,42,51,60,69,87,114,33,51,69,87),
pos.score=c(5,11,15,23,9,13,2,10,16,15,9,2,10)),
korla = data.frame( begin=c(6,14,22,30,38,46,54,62,70,78,6,30,46,70),
end=c(11,19,27,35,43,51,59,67,75,83,11,35,51,75),
pos.score=c(9,16,12,3,20,7,11,13,14,17,9,3,7,14))
)
unQualified <- list(
hotan = data.frame( begin=c(21,33,57,69,81,117,129,177,225,249,333,345,33,81,333),
end= c(26,38,62,74,86,122,134,182,230,254,338,350,38,86,338),
pos.score=c(7,34,29,14,23,20,11,30,19,17,6,4,34,23,6)),
aksu = data.frame( begin=c(13,23,33,43,53,63,73,93,113,123,143,153,183,33,63,143),
end= c(19,29,39,49,59,69,79,99,119,129,149,159,189,39,69,149),
pos.score=c(5,13,32,28,9,11,22,12,23,3,6,8,16,32,11,6)),
korla = data.frame( begin=c(23,34,45,56,67,78,89,122,133,144,166,188,56,89,144),
end=c(31,42,53,64,75,86,97,130,141,152,174,196,64,97,152),
pos.score=c(3,10,19,17,21,8,18,14,4,9,12,22,17,18,9))
)
编辑:
我确实以这种方式对我的数据进行了分类:
singleDF <-
bind_rows(c(Qualified = Qualified, Unqualified = unQualified), .id = "id") %>%
tidyr::separate(id, c("group", "list")) %>%
mutate(elm = ifelse(pos.score >= 10, "valid", "invalid")) %>%
arrange(list, group, desc(elm))
res <- singleDF %>% split(list(.$list, .$elm, .$group))
这是我想要的情节:
请注意,在valid、invalid 类别中,我需要对data.frame 进行重复删除,而Qualified、UnQualified 类别中,我将保留这些重复的行。
我怎样才能实现我想要的情节?我怎样才能通过使用 ggplot2 包来实现这一点?请问有什么想法吗?在此先感谢:)
【问题讨论】:
-
arrange(Name, Catg, desc(elm)会引发错误,因为您的数据中没有Name和Catg列。可能想检查一下。 -
@rawr 我打错了,现在应该可以了。谢谢你带来这个问题。