R - 包含不同列信息的图表/表格

时间:2018-04-10 15:46:47

标签: r database graph

我面临以下问题:我需要创建一个图表和一个表格,其中包含不同年份和地区(7年和5个地区)的学术和专业信息。

我有4个级别的学术(fundinc,medioinc,superiorinc和supdout)和3个职业级别(apoio,operacional和estrategico)。

每个级别都是一列(如果fundinc == 1,其他级别为0,如果apoio == 1,则operacional和estrategico都为0)。

数据库按年份和地区分开(data2010nordeste,data2010norte,data2010centro,data2010sudeste,data2010sul,...,data2016nordeste,data2016norte,data2016centro,data2016sudeste,data2016sul)。

db的类似于:

fundinc | medioinc | superiorinc | supdout | apoio | operacional | estrategico
1       | 0        | 0           | 0       | 1     | 0           | 0
0       | 1        | 0           | 0       | 0     | 1           | 0
0       | 0        | 1           | 0       | 0     | 0           | 1
0       | 0        | 1           | 0       | 0     | 0           | 1
0       | 1        | 0           | 0       | 1     | 0           | 0
1       | 0        | 0           | 0       | 1     | 0           | 0
.
. 
.

有什么建议吗?我完全迷失了。

我尝试创建一个函数:

pegaescolaridadeapoio = function (base) {

#Fundamental incompleto

a <- base[base$fundinc==1 & base$apoio==1, ]

#Medio incompleto

b <- base[base$medioinc==1 & base$apoio==1,]

#Superior incompleto

c <- base[base$superiorinc==1 & base$apoio==1,]

#superior e outros

d <- base[base$supdout==1 & base$apoio==1,]

vetor <- c(nrow(a),nrow(b),nrow(c),nrow(d))

return (vetor)
}

并将一些载体放在图表/表格上,但我没有成功。

1 个答案:

答案 0 :(得分:0)

@RichardoTheodoro

根据您的要求,我建议您简化数据

library(dplyr)
dat.clean <- dat %>% 
# Convert your columns into a single column, stored as factor variable
mutate(scholarity = factor(1 * fundinc + 2 * medioinc + 3 * superiorinc + 4 * supdout,
                           levels = c(1, 2, 3, 4), 
                           labels = c("fundinc", "medioinc", "superiorinc", "supdout")), 
       profession = factor(1 * apoio + 2 * operacional + 3 * estrategico, 
                           levels = c(1, 2, 3), 
                           labels = c("apoio", "operacional", "estragico"))) %>%
# Remove columns which will no longer be used
select(-fundinc, -medioinc, -superiorinc, -supdout, -apoio, -operacional, -estrategico)

然后你可以继续为你的计数/图表/图表进行其他数据操作:

# Group entries by scholarity and profession, then count the frequency of occurrence
dat.processed <- dat.clean %>%
  group_by(scholarity, profession) %>%
  mutate(freq = n()) %>%
  ungroup() 

# Plot bar chart
library(ggplot2)
ggplot(dat.processed, aes(scholarity, freq, fill = profession)) +
  geom_bar(stat = "identity", position = "dodge")