Arquivos texto com caracter separador
##-----------------------------------------------------------------------------
## Dados com separador de campo que é tabulação.
## Os dados aqui considerados então disponíveis no diretório web no
## seguinte endereço. Vá até lá e baixe os dados.
## http://www.leg.ufpr.br/~walmes/data/
## É possível fazer o download com o próprio R.
url <- "http://www.leg.ufpr.br/~walmes/data/brasilCopa2014.txt"
download.file(url=url, destfile=basename(url))
list.files(pattern="*.txt")
## [1] "brasilCopa2014.txt" "header.txt"
da <- read.table("brasilCopa2014.txt", header=TRUE, sep="\t")
str(da)
## 'data.frame': 21 obs. of 16 variables:
## $ R : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Name: Factor w/ 21 levels "Bernard","Dani Alves",..: 16 2 17 4 12 20 14 6 9 18 ...
## $ Pos : Factor w/ 15 levels "AM(CLR)","AM(LR),FW",..: 1 6 1 4 5 3 8 11 2 14 ...
## $ Age : int 22 31 23 27 27 30 26 31 28 26 ...
## $ cm : int 175 173 179 189 187 183 174 185 180 181 ...
## $ kg : int 64 64 67 86 80 79 75 75 85 77 ...
## $ Apps: Factor w/ 13 levels "0(1)","0(3)",..: 10 9 13 13 12 12 12 12 11 11 ...
## $ Goal: Factor w/ 4 levels "-","1","2","4": 4 1 3 3 1 2 1 2 1 1 ...
## $ A : Factor w/ 3 levels "-","1","2": 2 1 3 2 2 1 3 1 1 1 ...
## $ Yel : Factor w/ 4 levels "-","1","2","3": 2 2 2 1 3 4 1 1 2 1 ...
## $ Red : Factor w/ 1 level "-": 1 1 1 1 1 1 1 1 1 1 ...
## $ SpG : Factor w/ 12 levels "-","0,3","0,5",..: 12 9 10 9 3 2 9 10 11 8 ...
## $ PS. : Factor w/ 21 levels "100","66,9","67",..: 8 12 6 10 19 16 11 3 5 13 ...
## $ AW : Factor w/ 12 levels "-","0,3","0,6",..: 5 7 6 10 12 11 2 9 8 4 ...
## $ MoM : Factor w/ 3 levels "-","1","2": 3 1 2 1 2 2 1 1 1 1 ...
## $ Rt : Factor w/ 21 levels "5,17","6,05",..: 21 20 19 18 17 16 15 14 13 12 ...
da <- read.table("brasilCopa2014.txt", header=TRUE, sep="\t",
stringsAsFactors=FALSE, na.string="-")
str(da)
## 'data.frame': 21 obs. of 16 variables:
## $ R : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Name: chr "Neymar" "Dani Alves" "Oscar" "David Luiz" ...
## $ Pos : chr "AM(CLR)" "D(CR)" "AM(CLR)" "D(C),DM(C)" ...
## $ Age : int 22 31 23 27 27 30 26 31 28 26 ...
## $ cm : int 175 173 179 189 187 183 174 185 180 181 ...
## $ kg : int 64 64 67 86 80 79 75 75 85 77 ...
## $ Apps: chr "5" "4" "7" "7" ...
## $ Goal: int 4 NA 2 2 NA 1 NA 1 NA NA ...
## $ A : int 1 NA 2 1 1 NA 2 NA NA NA ...
## $ Yel : int 1 1 1 NA 2 3 NA NA 1 NA ...
## $ Red : logi NA NA NA NA NA NA ...
## $ SpG : chr "3,6" "1,3" "2" "1,3" ...
## $ PS. : chr "79" "84" "78,6" "81" ...
## $ AW : chr "0,8" "1" "0,9" "2,3" ...
## $ MoM : int 2 NA 1 NA 1 1 NA NA NA NA ...
## $ Rt : chr "8,22" "7,53" "7,39" "7,35" ...
##-----------------------------------------------------------------------------
## Dados com separador de campo que é ponto e vírgula. Aqui os dados
## serão importados diretamente do link web sem precisar fazer download.
da <-
read.table("http://www.leg.ufpr.br/~walmes/data/brasilCopa2014.csv",
header=TRUE, sep=";", stringsAsFactors=FALSE, na.string="-")
str(da)
## 'data.frame': 21 obs. of 16 variables:
## $ R : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Name: chr "Neymar" "Dani Alves" "Oscar" "David Luiz" ...
## $ Pos : chr "AM(CLR)" "D(CR)" "AM(CLR)" "D(C),DM(C)" ...
## $ Age : int 22 31 23 27 27 30 26 31 28 26 ...
## $ cm : int 175 173 179 189 187 183 174 185 180 181 ...
## $ kg : int 64 64 67 86 80 79 75 75 85 77 ...
## $ Apps: chr "5" "4" "7" "7" ...
## $ Goal: int 4 NA 2 2 NA 1 NA 1 NA NA ...
## $ A : int 1 NA 2 1 1 NA 2 NA NA NA ...
## $ Yel : int 1 1 1 NA 2 3 NA NA 1 NA ...
## $ Red : logi NA NA NA NA NA NA ...
## $ SpG : num 3.6 1.3 2 1.3 0.5 0.3 1.3 2 2.3 1.2 ...
## $ PS. : num 79 84 78.6 81 91.1 87.4 83 67 71.1 84.5 ...
## $ AW : num 0.8 1 0.9 2.3 3 2.5 0.3 1.3 1.2 0.7 ...
## $ MoM : int 2 NA 1 NA 1 1 NA NA NA NA ...
## $ Rt : num 8.22 7.53 7.39 7.35 7.27 7.16 7.08 6.66 6.57 6.51 ...
Arquivos texto com comprimento fixo de campo
##-----------------------------------------------------------------------------
## Dados com comprimento fixo de campo.
l <- c(0,3,16,28,31,35,38,43,45,47,49,50,54,60,64,66,70)
diff(l)
## [1] 3 13 12 3 4 3 5 2 2 2 1 4 6 4 2 4
db <-
read.fwf("http://www.leg.ufpr.br/~walmes/data/brasilCopa2014fwf.txt",
header=TRUE, sep="\t",
widths=diff(l), stringsAsFactors=FALSE)
str(db)
## 'data.frame': 21 obs. of 16 variables:
## $ R : num 1 2 3 4 5 6 7 8 9 10 ...
## $ Name: chr "Neymar " "Dani Alves " "Oscar " "David Luiz " ...
## $ Pos : chr "AM(CLR) " "D(CR) " "AM(CLR) " "D(C),DM(C) " ...
## $ Age : num 22 31 23 27 27 30 26 31 28 26 ...
## $ cm : num 175 173 179 189 187 183 174 185 180 181 ...
## $ kg : num 64 64 67 86 80 79 75 75 85 77 ...
## $ Apps: chr "5 " "4 " "7 " "7 " ...
## $ Goal: num 4 NA 2 2 NA 1 NA 1 NA NA ...
## $ A : num 1 NA 2 1 1 NA 2 NA NA NA ...
## $ Yel : num 1 1 1 NA 2 3 NA NA 1 NA ...
## $ Red : logi NA NA NA NA NA NA ...
## $ SpG : num 3.6 1.3 2 1.3 0.5 0.3 1.3 2 2.3 1.2 ...
## $ PS. : num 79 84 78.6 81 91.1 87.4 83 67 71.1 84.5 ...
## $ AW : num 0.8 1 0.9 2.3 3 2.5 0.3 1.3 1.2 0.7 ...
## $ MoM : num 2 NA 1 NA 1 1 NA NA NA NA ...
## $ Rt : num 8.22 7.53 7.39 7.35 7.27 7.16 7.08 6.66 6.57 6.51 ...
gsub(x=db$Name, pattern="\\s*$", replacement="")
## [1] "Neymar" "Dani Alves" "Oscar" "David Luiz" "Luiz Gustavo"
## [6] "Thiago Silva" "Marcelo" "Fred" "Hulk" "Paulinho"
## [11] "Fernandinho" "Maicon" "Hernanes" "Ramires" "Willian"
## [16] "Henrique" "Bernard" "Julio César" "Jô" "Maxwell"
## [21] "Dante"
names(db) <- tolower(names(db))
str(db)
## 'data.frame': 21 obs. of 16 variables:
## $ r : num 1 2 3 4 5 6 7 8 9 10 ...
## $ name: chr "Neymar " "Dani Alves " "Oscar " "David Luiz " ...
## $ pos : chr "AM(CLR) " "D(CR) " "AM(CLR) " "D(C),DM(C) " ...
## $ age : num 22 31 23 27 27 30 26 31 28 26 ...
## $ cm : num 175 173 179 189 187 183 174 185 180 181 ...
## $ kg : num 64 64 67 86 80 79 75 75 85 77 ...
## $ apps: chr "5 " "4 " "7 " "7 " ...
## $ goal: num 4 NA 2 2 NA 1 NA 1 NA NA ...
## $ a : num 1 NA 2 1 1 NA 2 NA NA NA ...
## $ yel : num 1 1 1 NA 2 3 NA NA 1 NA ...
## $ red : logi NA NA NA NA NA NA ...
## $ spg : num 3.6 1.3 2 1.3 0.5 0.3 1.3 2 2.3 1.2 ...
## $ ps. : num 79 84 78.6 81 91.1 87.4 83 67 71.1 84.5 ...
## $ aw : num 0.8 1 0.9 2.3 3 2.5 0.3 1.3 1.2 0.7 ...
## $ mom : num 2 NA 1 NA 1 1 NA NA NA NA ...
## $ rt : num 8.22 7.53 7.39 7.35 7.27 7.16 7.08 6.66 6.57 6.51 ...
Edição de tabelas
##-----------------------------------------------------------------------------
## Ler dados de um experimento em blocos com variedades de batatinha. Os
## dados estão no formato amplo.
bat <- read.table("http://www.leg.ufpr.br/~walmes/data/pimentel_batatinha_wide.txt",
header=TRUE, sep="\t")
str(bat)
## 'data.frame': 8 obs. of 5 variables:
## $ variedade: Factor w/ 8 levels "B 116-51","B 1-52",..: 7 6 8 5 3 2 1 4
## $ I : num 9.2 21.1 22.6 15.4 12.7 20 23.1 18
## $ II : num 13.4 27 29.9 11.9 18 21.1 24.2 24.6
## $ III : num 11 26.4 24.2 10.1 18.2 20 26.4 24
## $ IV : num 9.2 25.7 25.1 12.3 17.1 28 16.3 24.6
bat
## variedade I II III IV
## 1 Kennebec 9.2 13.4 11.0 9.2
## 2 Huinkul 21.1 27.0 26.4 25.7
## 3 S. Rafalela 22.6 29.9 24.2 25.1
## 4 Buena Vista 15.4 11.9 10.1 12.3
## 5 B 25-50 E 12.7 18.0 18.2 17.1
## 6 B 1-52 20.0 21.1 20.0 28.0
## 7 B 116-51 23.1 24.2 26.4 16.3
## 8 B 72-53 A 18.0 24.6 24.0 24.6
require(reshape)
## Loading required package: reshape
## Empilhando os valores, de amplo para longo.
batl <- melt(bat, id.vars="variedade", variable_name="bloco")
str(batl)
## 'data.frame': 32 obs. of 3 variables:
## $ variedade: Factor w/ 8 levels "B 116-51","B 1-52",..: 7 6 8 5 3 2 1 4 7 6 ...
## $ bloco : Factor w/ 4 levels "I","II","III",..: 1 1 1 1 1 1 1 1 2 2 ...
## $ value : num 9.2 21.1 22.6 15.4 12.7 20 23.1 18 13.4 27 ...
## De longo para amplo (caminho inverso).
cast(batl, variedade~bloco, value="value")
## variedade I II III IV
## 1 B 116-51 23.1 24.2 26.4 16.3
## 2 B 1-52 20.0 21.1 20.0 28.0
## 3 B 25-50 E 12.7 18.0 18.2 17.1
## 4 B 72-53 A 18.0 24.6 24.0 24.6
## 5 Buena Vista 15.4 11.9 10.1 12.3
## 6 Huinkul 21.1 27.0 26.4 25.7
## 7 Kennebec 9.2 13.4 11.0 9.2
## 8 S. Rafalela 22.6 29.9 24.2 25.1
##-----------------------------------------------------------------------------
## Ordenar a tabela.
require(plyr)
## Loading required package: plyr
##
## Attaching package: 'plyr'
##
## The following objects are masked from 'package:reshape':
##
## rename, round_any
arrange(batl, variedade, bloco)
## variedade bloco value
## 1 B 116-51 I 23.1
## 2 B 116-51 II 24.2
## 3 B 116-51 III 26.4
## 4 B 116-51 IV 16.3
## 5 B 1-52 I 20.0
## 6 B 1-52 II 21.1
## 7 B 1-52 III 20.0
## 8 B 1-52 IV 28.0
## 9 B 25-50 E I 12.7
## 10 B 25-50 E II 18.0
## 11 B 25-50 E III 18.2
## 12 B 25-50 E IV 17.1
## 13 B 72-53 A I 18.0
## 14 B 72-53 A II 24.6
## 15 B 72-53 A III 24.0
## 16 B 72-53 A IV 24.6
## 17 Buena Vista I 15.4
## 18 Buena Vista II 11.9
## 19 Buena Vista III 10.1
## 20 Buena Vista IV 12.3
## 21 Huinkul I 21.1
## 22 Huinkul II 27.0
## 23 Huinkul III 26.4
## 24 Huinkul IV 25.7
## 25 Kennebec I 9.2
## 26 Kennebec II 13.4
## 27 Kennebec III 11.0
## 28 Kennebec IV 9.2
## 29 S. Rafalela I 22.6
## 30 S. Rafalela II 29.9
## 31 S. Rafalela III 24.2
## 32 S. Rafalela IV 25.1
arrange(batl, value)
## variedade bloco value
## 1 Kennebec I 9.2
## 2 Kennebec IV 9.2
## 3 Buena Vista III 10.1
## 4 Kennebec III 11.0
## 5 Buena Vista II 11.9
## 6 Buena Vista IV 12.3
## 7 B 25-50 E I 12.7
## 8 Kennebec II 13.4
## 9 Buena Vista I 15.4
## 10 B 116-51 IV 16.3
## 11 B 25-50 E IV 17.1
## 12 B 72-53 A I 18.0
## 13 B 25-50 E II 18.0
## 14 B 25-50 E III 18.2
## 15 B 1-52 I 20.0
## 16 B 1-52 III 20.0
## 17 Huinkul I 21.1
## 18 B 1-52 II 21.1
## 19 S. Rafalela I 22.6
## 20 B 116-51 I 23.1
## 21 B 72-53 A III 24.0
## 22 B 116-51 II 24.2
## 23 S. Rafalela III 24.2
## 24 B 72-53 A II 24.6
## 25 B 72-53 A IV 24.6
## 26 S. Rafalela IV 25.1
## 27 Huinkul IV 25.7
## 28 Huinkul III 26.4
## 29 B 116-51 III 26.4
## 30 Huinkul II 27.0
## 31 B 1-52 IV 28.0
## 32 S. Rafalela II 29.9
arrange(batl, variedade, value)
## variedade bloco value
## 1 B 116-51 IV 16.3
## 2 B 116-51 I 23.1
## 3 B 116-51 II 24.2
## 4 B 116-51 III 26.4
## 5 B 1-52 I 20.0
## 6 B 1-52 III 20.0
## 7 B 1-52 II 21.1
## 8 B 1-52 IV 28.0
## 9 B 25-50 E I 12.7
## 10 B 25-50 E IV 17.1
## 11 B 25-50 E II 18.0
## 12 B 25-50 E III 18.2
## 13 B 72-53 A I 18.0
## 14 B 72-53 A III 24.0
## 15 B 72-53 A II 24.6
## 16 B 72-53 A IV 24.6
## 17 Buena Vista III 10.1
## 18 Buena Vista II 11.9
## 19 Buena Vista IV 12.3
## 20 Buena Vista I 15.4
## 21 Huinkul I 21.1
## 22 Huinkul IV 25.7
## 23 Huinkul III 26.4
## 24 Huinkul II 27.0
## 25 Kennebec I 9.2
## 26 Kennebec IV 9.2
## 27 Kennebec III 11.0
## 28 Kennebec II 13.4
## 29 S. Rafalela I 22.6
## 30 S. Rafalela III 24.2
## 31 S. Rafalela IV 25.1
## 32 S. Rafalela II 29.9
##-----------------------------------------------------------------------------
## Filtrar a tabela (tomar subconjuntos).
subset(batl, variedade=="Kennebec")
## variedade bloco value
## 1 Kennebec I 9.2
## 9 Kennebec II 13.4
## 17 Kennebec III 11.0
## 25 Kennebec IV 9.2
subset(batl, variedade%in%c("Kennebec","Buena Vista"))
## variedade bloco value
## 1 Kennebec I 9.2
## 4 Buena Vista I 15.4
## 9 Kennebec II 13.4
## 12 Buena Vista II 11.9
## 17 Kennebec III 11.0
## 20 Buena Vista III 10.1
## 25 Kennebec IV 9.2
## 28 Buena Vista IV 12.3
subset(batl, is.element(variedade, c("Kennebec","Buena Vista")))
## variedade bloco value
## 1 Kennebec I 9.2
## 4 Buena Vista I 15.4
## 9 Kennebec II 13.4
## 12 Buena Vista II 11.9
## 17 Kennebec III 11.0
## 20 Buena Vista III 10.1
## 25 Kennebec IV 9.2
## 28 Buena Vista IV 12.3
subset(batl, bloco=="I")
## variedade bloco value
## 1 Kennebec I 9.2
## 2 Huinkul I 21.1
## 3 S. Rafalela I 22.6
## 4 Buena Vista I 15.4
## 5 B 25-50 E I 12.7
## 6 B 1-52 I 20.0
## 7 B 116-51 I 23.1
## 8 B 72-53 A I 18.0
subset(batl, bloco%in%c("I","IV") & variedade=="Kennebec")
## variedade bloco value
## 1 Kennebec I 9.2
## 25 Kennebec IV 9.2
subset(batl, bloco%in%c("I","IV") | variedade=="Kennebec")
## variedade bloco value
## 1 Kennebec I 9.2
## 2 Huinkul I 21.1
## 3 S. Rafalela I 22.6
## 4 Buena Vista I 15.4
## 5 B 25-50 E I 12.7
## 6 B 1-52 I 20.0
## 7 B 116-51 I 23.1
## 8 B 72-53 A I 18.0
## 9 Kennebec II 13.4
## 17 Kennebec III 11.0
## 25 Kennebec IV 9.2
## 26 Huinkul IV 25.7
## 27 S. Rafalela IV 25.1
## 28 Buena Vista IV 12.3
## 29 B 25-50 E IV 17.1
## 30 B 1-52 IV 28.0
## 31 B 116-51 IV 16.3
## 32 B 72-53 A IV 24.6
subset(batl, value>25)
## variedade bloco value
## 10 Huinkul II 27.0
## 11 S. Rafalela II 29.9
## 18 Huinkul III 26.4
## 23 B 116-51 III 26.4
## 26 Huinkul IV 25.7
## 27 S. Rafalela IV 25.1
## 30 B 1-52 IV 28.0
subset(batl, value<12)
## variedade bloco value
## 1 Kennebec I 9.2
## 12 Buena Vista II 11.9
## 17 Kennebec III 11.0
## 20 Buena Vista III 10.1
## 25 Kennebec IV 9.2
##-----------------------------------------------------------------------------
## Classificar valoes.
range(batl$value)
## [1] 9.2 29.9
cls <- c(-Inf,15,25,Inf)
findInterval(batl$value, vec=cls)
## [1] 1 2 2 2 1 2 2 2 1 3 3 1 2 2 2 2 1 3 2 1 2 2 3 2 1 3 3 1 2 3 2 2
cut(batl$value, breaks=cls)
## [1] (-Inf,15] (15,25] (15,25] (15,25] (-Inf,15] (15,25] (15,25] (15,25]
## [9] (-Inf,15] (25, Inf] (25, Inf] (-Inf,15] (15,25] (15,25] (15,25] (15,25]
## [17] (-Inf,15] (25, Inf] (15,25] (-Inf,15] (15,25] (15,25] (25, Inf] (15,25]
## [25] (-Inf,15] (25, Inf] (25, Inf] (-Inf,15] (15,25] (25, Inf] (15,25] (15,25]
## Levels: (-Inf,15] (15,25] (25, Inf]
cut(batl$value, breaks=cls, labels=c("baixa","media","alta"))
## [1] baixa media media media baixa media media media baixa alta alta baixa media media
## [15] media media baixa alta media baixa media media alta media baixa alta alta baixa
## [29] media alta media media
## Levels: baixa media alta
##-----------------------------------------------------------------------------
## Adicionar uma coluna à tabela de dados.
## Classe de produtividade.
batl$pcls <- cut(batl$value, breaks=cls,
labels=c("baixa","media","alta"))
str(batl)
## 'data.frame': 32 obs. of 4 variables:
## $ variedade: Factor w/ 8 levels "B 116-51","B 1-52",..: 7 6 8 5 3 2 1 4 7 6 ...
## $ bloco : Factor w/ 4 levels "I","II","III",..: 1 1 1 1 1 1 1 1 2 2 ...
## $ value : num 9.2 21.1 22.6 15.4 12.7 20 23.1 18 13.4 27 ...
## $ pcls : Factor w/ 3 levels "baixa","media",..: 1 2 2 2 1 2 2 2 1 3 ...
batl <- transform(batl, lprod=log10(value), prods=value^2)
str(batl)
## 'data.frame': 32 obs. of 6 variables:
## $ variedade: Factor w/ 8 levels "B 116-51","B 1-52",..: 7 6 8 5 3 2 1 4 7 6 ...
## $ bloco : Factor w/ 4 levels "I","II","III",..: 1 1 1 1 1 1 1 1 2 2 ...
## $ value : num 9.2 21.1 22.6 15.4 12.7 20 23.1 18 13.4 27 ...
## $ pcls : Factor w/ 3 levels "baixa","media",..: 1 2 2 2 1 2 2 2 1 3 ...
## $ lprod : num 0.964 1.324 1.354 1.188 1.104 ...
## $ prods : num 84.6 445.2 510.8 237.2 161.3 ...