【问题标题】:How to graph plots that only have enough data?如何绘制只有足够数据的图?
【发布时间】:2019-07-16 14:06:03
【问题描述】:

我正在处理一个包含野生动物重量和大小的大型数据集,我按日期(第 1 季、第 2 季等)将其分成更小的部分。我编写了一个函数来在 ggplot2 中为每只动物创建图表,但有些动物被捕获的频率太低,以至于它们的数据基本上没有意义。

如何更改此功能以仅绘制在给定子集中出现超过 3 或 4 次的动物?

这是我拥有的功能:

individual_graph <- function(animal_number){
  a_plot <- ggplot(data=animal_number, aes(x=Date, y=Weight)) +
    geom_point() +
    theme_bw() +
    ggtitle(animal_number$Number)+
    NULL

  return(a_plot)
}

这是我用来生成图表的 for 循环:

  graph_list <- list(NULL)
for(animal_id in (unique(season_1$Number))){
  a <- individual_graph(season_1[Number==animal_id])
  graph_list <- c(graph_list, list(a))
}

plot_list

【问题讨论】:

  • 欢迎来到 SO!也许有比循环更好的方法,但是如果没有任何类型的数据就很难找到。你能举一个有用的例子吗?
  • filter from dplyr 应该可以带你到那里。

标签: r function for-loop ggplot2


【解决方案1】:
table(animal_number) 

告诉您哪种动物被看到了多少次(按动物编号排序)。

seen3times<-sort(unique(animal_number))[tabulate(factor(animal_number))>3]

将为您提供至少被看到 3 次的所有动物的唯一编号,然后使用

data[which(animal_number==seen3times)]

应该相应地过滤您的数据

【讨论】:

    猜你喜欢
    • 2016-03-19
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多