如何在绘图之前对数据进行子查询

时间:2017-06-28 18:09:58

标签: r

我有一个看起来像这样的数据集

col1 - desc, col2 - value, col3 - count (header)
value1,      descriptor 1, 6
value1,      descriptor 2, 3
value1,      descriptor 3, 1
value2,      descriptor 7, 8
value2,      descriptor 8, 6
value2,      descriptor 9, 2

对于col1中的每个唯一值,我需要以这样的方式对数据进行分区:在x轴上使用col2,使用col 3作为y值。

1 个答案:

答案 0 :(得分:0)

不清楚您计划创建哪种情节。但我认为关键是要根据col1拆分数据框。之后,为每个分离的数据框创建绘图。

这是一个例子。最终输出p_lst包含col1中所有唯一值的条形图,其中col2为x轴,col3为y轴。请注意,我还在每个情节的标题中添加了col1

# Load package
library(ggplot2)

# Create example data frame
dt <- read.csv(text = "col1 - desc, col2 - value, col3 - count (header)
value1,      descriptor 1, 6
value1,      descriptor 2, 3
value1,      descriptor 3, 1
value2,      descriptor 7, 8
value2,      descriptor 8, 6
value2,      descriptor 9, 2",
               header = TRUE, stringsAsFactors = FALSE)

# Rename dt
colnames(dt) <- c("col1", "col2", "col3")

# Split dt based on col1, save results to lst
lst <- split(dt, dt$col1)

# Create a function to produce bar plot
bar_fun <- function(dt){
  p <- ggplot(dt, aes(x = col2, y = col3)) +
    geom_col() +
    ggtitle(as.character(unique(dt$col1)))

  return(p)
}

# Plot all data frames in lst
p_lst <- lapply(lst, bar_fun)

# You can access individual plot by index or name
p_lst[[1]]
p_lst$value2