R拆分数据框并编写多个构面图

时间:2018-04-26 14:20:02

标签: r dataframe ggplot2 iteration

我有一个迭代/缩放问题。

我有一个dataframe = geocoded 它有关于12个地区= LA

的信息

我可以对此数据进行子集化,并将此子集的结果写入多个文件

    ## read data in from geocoded file
    geocoded1<-read.csv("S:/somestuff/geocoded 2015 - 2018.csv",na.strings=c(""," ","N/A"))
    geocoded<-subset(geocoded1,geocoded1$CONFIDENCE !="Discarded")

    #split geocoded data by LA 
    x <-split(geocoded,list(geocoded$LA),drop = TRUE,sep = "_")


    #Split geocoded data by LA and Final
    #split(x, f, drop = FALSE, sep = ".", lex.order = FALSE, .)
    y<-split(geocoded,list(geocoded$LA,geocoded$DISEASE), drop = TRUE, sep = "_")


#write CSV files of geocoded to file locations
lapply(names(x), function(name) write.csv(x[[name]], file = paste('S:/some stuff/LA/',name,".csv",sep="")))
lapply(names(y),function(name) write.csv(y[[name]], file = paste('S:/some stuff/LAFinal/',name,".csv",sep="")))

我可以将这个子集的结果写入全局环境(我需要吗?)

#write the results of subsetting data into x and y to the global environment
list2env(x,envir = .GlobalEnv)
list2env(y,envir = .GlobalEnv)

我可以在小平面包装中为每个数据框绘制一个堆积条

# Stacked Bar Plot with Colors and Legend
bm<-ggplot(data =DATA,aes(x=MONTH,fill=FILL))+geom_bar()
bm +facet_wrap("~YEAR,ncol = 5)

我可以手动完成它们(不,我不能在那里大约100个!)。

如何以与将其写入文件相同的方式绘制x或y的内容?我在那里使用了lapply。有没有办法lapply或类似可以说 之一: 对于x绘图堆积的条形图中的所有名称,以年为单位 要么 对于按年度划分的全球环境中的所有数据框

我计划绘制一个堆积的条形图,按年划分,有4年;在y上具有相同的比例,x表示一年中的月份,填充基于另一列(例如性别)。 我想标准化每个情节的外观,使它们成为透明的背景。

提前致谢

编辑:

# Stacked Bar Plot with Colors and Legend
bm<-ggplot(data =LADISEASE1,aes(x=MONTH,fill=FILL))+geom_bar()
bm +facet_wrap("~YEAR,ncol = 5)

当我分裂洛杉矶和疾病时,我每个LA产生20个疾病数据帧(只要它们不是空的,所以~200)。

再次编辑: 使用评论中的数据

DISEASE = c("Marco Polio","Marco Polio","Marco Polio","Marco Polio","Marco Polio",
            "Mumps","Mumps","Mumps","Mumps","Mumps",
            "Chicky Pox","Chicky Pox","Chicky Pox","Chicky Pox","Chicky Pox")
YEAR = c(2011, 2012, 2013, 2014, 2015,
            2011, 2012, 2013, 2014, 2015,
            2011, 2012, 2013, 2014, 2015)
MONTH =c(1,2,3,4,5,6,7,8,9,10,11,12,1,12)
LA = c("A","B","C")

VALUE = c(82,89,79,51,51,
          79,91,69,89,78,
          71,69,95,61,87)

我可以对单个数据帧做些什么呢

#split geocoded data by LA 
LA <-split(geocoded,list(geocoded$LA),drop = TRUE,sep = "_")
str(LA)

将大数据帧拆分为12个区域+丢失。

我想我正在尝试(并且未能描述)解决的问题是如何为每年每个LA创建一个包含20个时间轴图表的面板。 例如,区域a,感染1-20,2015-2018之间的每年。

我是否会在年份和感染方面对图表进行分析,或者首先对数据框进行切片然后再对图表进行分割?

显示的示例很棒!它让我想到,我应该这样做。这样一个人就可以很快看到每年的病例数。

切割数据框并制作新数据框非常容易,我得到了一点点。我需要做的就是在一个数据框上工作,但输出图表作为我可以粘贴/写入文档的图形。

1 个答案:

答案 0 :(得分:0)

如果可能,我建议不要拆分成不同的数据框。而是将所有数据保存在单个数据框中,并在DISEASE变量上进行分面,以便为每种疾病获取单独的图表。也许以下代码会让您了解可以获得所需最终结果的另一条路径:

library(tidyverse)

DISEASE = c("Marco Polio","Marco Polio","Marco Polio","Marco Polio","Marco Polio",
            "Mumps","Mumps","Mumps","Mumps","Mumps",
            "Chicky Pox","Chicky Pox","Chicky Pox","Chicky Pox","Chicky Pox")
YEAR = c(2011, 2012, 2013, 2014, 2015,
            2011, 2012, 2013, 2014, 2015,
            2011, 2012, 2013, 2014, 2015)
VALUE = c(82,89,79,51,51,
          79,91,69,89,78,
          71,69,95,61,87)

DATA = data.frame(DISEASE, YEAR, VALUE)

plot = ggplot(DATA) +
  geom_bar(aes(x=YEAR, y=VALUE), stat="identity") +
  facet_grid(~DISEASE)

print(plot)

enter image description here