R - Arquivos CSV
Em R, podemos ler dados de arquivos armazenados fora do ambiente R. Também podemos gravar dados em arquivos que serão armazenados e acessados pelo sistema operacional. R pode ler e gravar em vários formatos de arquivo como csv, excel, xml etc.
Neste capítulo, aprenderemos a ler dados de um arquivo csv e, a seguir, gravar dados em um arquivo csv. O arquivo deve estar presente no diretório de trabalho atual para que R possa lê-lo. Claro que também podemos definir nosso próprio diretório e ler os arquivos a partir dele.
Obtendo e configurando o diretório de trabalho
Você pode verificar para qual diretório o espaço de trabalho R está apontando usando o getwd()função. Você também pode definir um novo diretório de trabalho usandosetwd()função.
# Get and print current working directory.
print(getwd())
# Set current working directory.
setwd("/web/com")
# Get and print current working directory.
print(getwd())
Quando executamos o código acima, ele produz o seguinte resultado -
[1] "/web/com/1441086124_2016"
[1] "/web/com"
Este resultado depende do seu sistema operacional e do diretório atual onde você está trabalhando.
Entrada como arquivo CSV
O arquivo csv é um arquivo de texto no qual os valores nas colunas são separados por uma vírgula. Vamos considerar os seguintes dados presentes no arquivo chamadoinput.csv.
Você pode criar este arquivo usando o bloco de notas do Windows, copiando e colando esses dados. Salve o arquivo comoinput.csv usando a opção salvar como todos os arquivos (*. *) no bloco de notas.
id,name,salary,start_date,dept
1,Rick,623.3,2012-01-01,IT
2,Dan,515.2,2013-09-23,Operations
3,Michelle,611,2014-11-15,IT
4,Ryan,729,2014-05-11,HR
5,Gary,843.25,2015-03-27,Finance
6,Nina,578,2013-05-21,IT
7,Simon,632.8,2013-07-30,Operations
8,Guru,722.5,2014-06-17,Finance
Ler um arquivo CSV
A seguir está um exemplo simples de read.csv() função para ler um arquivo CSV disponível em seu diretório de trabalho atual -
data <- read.csv("input.csv")
print(data)
Quando executamos o código acima, ele produz o seguinte resultado -
id, name, salary, start_date, dept
1 1 Rick 623.30 2012-01-01 IT
2 2 Dan 515.20 2013-09-23 Operations
3 3 Michelle 611.00 2014-11-15 IT
4 4 Ryan 729.00 2014-05-11 HR
5 NA Gary 843.25 2015-03-27 Finance
6 6 Nina 578.00 2013-05-21 IT
7 7 Simon 632.80 2013-07-30 Operations
8 8 Guru 722.50 2014-06-17 Finance
Analisando o arquivo CSV
Por padrão, o read.csv()função fornece a saída como um quadro de dados. Isso pode ser verificado facilmente da seguinte maneira. Também podemos verificar o número de colunas e linhas.
data <- read.csv("input.csv")
print(is.data.frame(data))
print(ncol(data))
print(nrow(data))
Quando executamos o código acima, ele produz o seguinte resultado -
[1] TRUE
[1] 5
[1] 8
Depois de ler os dados em um quadro de dados, podemos aplicar todas as funções aplicáveis aos quadros de dados, conforme explicado na seção subsequente.
Obtenha o salário máximo
# Create a data frame.
data <- read.csv("input.csv")
# Get the max salary from data frame.
sal <- max(data$salary)
print(sal)
Quando executamos o código acima, ele produz o seguinte resultado -
[1] 843.25
Obtenha os detalhes da pessoa com salário máximo
Podemos buscar linhas que atendam a critérios de filtro específicos semelhantes a uma cláusula where do SQL.
# Create a data frame.
data <- read.csv("input.csv")
# Get the max salary from data frame.
sal <- max(data$salary)
# Get the person detail having max salary.
retval <- subset(data, salary == max(salary))
print(retval)
Quando executamos o código acima, ele produz o seguinte resultado -
id name salary start_date dept
5 NA Gary 843.25 2015-03-27 Finance
Faça com que todas as pessoas trabalhem no departamento de TI
# Create a data frame.
data <- read.csv("input.csv")
retval <- subset( data, dept == "IT")
print(retval)
Quando executamos o código acima, ele produz o seguinte resultado -
id name salary start_date dept
1 1 Rick 623.3 2012-01-01 IT
3 3 Michelle 611.0 2014-11-15 IT
6 6 Nina 578.0 2013-05-21 IT
Obtenha as pessoas no departamento de TI cujo salário é superior a 600
# Create a data frame.
data <- read.csv("input.csv")
info <- subset(data, salary > 600 & dept == "IT")
print(info)
Quando executamos o código acima, ele produz o seguinte resultado -
id name salary start_date dept
1 1 Rick 623.3 2012-01-01 IT
3 3 Michelle 611.0 2014-11-15 IT
Obtenha as pessoas que aderiram em ou depois de 2014
# Create a data frame.
data <- read.csv("input.csv")
retval <- subset(data, as.Date(start_date) > as.Date("2014-01-01"))
print(retval)
Quando executamos o código acima, ele produz o seguinte resultado -
id name salary start_date dept
3 3 Michelle 611.00 2014-11-15 IT
4 4 Ryan 729.00 2014-05-11 HR
5 NA Gary 843.25 2015-03-27 Finance
8 8 Guru 722.50 2014-06-17 Finance
Gravando em um arquivo CSV
R pode criar um arquivo csv a partir de um quadro de dados existente. owrite.csv()função é usada para criar o arquivo csv. Este arquivo é criado no diretório de trabalho.
# Create a data frame.
data <- read.csv("input.csv")
retval <- subset(data, as.Date(start_date) > as.Date("2014-01-01"))
# Write filtered data into a new file.
write.csv(retval,"output.csv")
newdata <- read.csv("output.csv")
print(newdata)
Quando executamos o código acima, ele produz o seguinte resultado -
X id name salary start_date dept
1 3 3 Michelle 611.00 2014-11-15 IT
2 4 4 Ryan 729.00 2014-05-11 HR
3 5 NA Gary 843.25 2015-03-27 Finance
4 8 8 Guru 722.50 2014-06-17 Finance
Aqui, a coluna X vem do conjunto de dados newper. Isso pode ser eliminado usando parâmetros adicionais durante a gravação do arquivo.
# Create a data frame.
data <- read.csv("input.csv")
retval <- subset(data, as.Date(start_date) > as.Date("2014-01-01"))
# Write filtered data into a new file.
write.csv(retval,"output.csv", row.names = FALSE)
newdata <- read.csv("output.csv")
print(newdata)
Quando executamos o código acima, ele produz o seguinte resultado -
id name salary start_date dept
1 3 Michelle 611.00 2014-11-15 IT
2 4 Ryan 729.00 2014-05-11 HR
3 NA Gary 843.25 2015-03-27 Finance
4 8 Guru 722.50 2014-06-17 Finance