Учебники

R — CSV файлы

В R мы можем читать данные из файлов, хранящихся вне среды R. Мы также можем записывать данные в файлы, которые будут храниться и доступны операционной системе. R может читать и записывать в различные форматы файлов, такие как CSV, Excel, XML и т. Д.

В этой главе мы научимся читать данные из файла CSV, а затем записывать данные в файл CSV. Файл должен присутствовать в текущем рабочем каталоге, чтобы R мог его прочитать. Конечно, мы также можем установить наш собственный каталог и читать файлы оттуда.

Получение и настройка рабочего каталога

Вы можете проверить, на какой каталог указывает рабочее пространство R, используя функцию getwd () . Вы также можете установить новый рабочий каталог, используя функцию setwd () .

# Get and print current working directory.
print(getwd())

# Set current working directory.
setwd("/web/com")

# Get and print current working directory.
print(getwd())

Когда мы выполняем приведенный выше код, он дает следующий результат —

[1] "/web/com/1441086124_2016"
[1] "/web/com"

Этот результат зависит от вашей ОС и вашего текущего каталога, в котором вы работаете.

Ввод как файл CSV

Файл CSV представляет собой текстовый файл, в котором значения в столбцах разделены запятой. Давайте рассмотрим следующие данные, присутствующие в файле с именем input.csv .

Вы можете создать этот файл с помощью блокнота Windows, скопировав и вставив эти данные. Сохраните файл как input.csv, используя параметр «Сохранить как все файлы (*. *)» В блокноте.

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

Чтение файла CSV

Ниже приведен простой пример функции read.csv () для чтения файла CSV, доступного в вашем текущем рабочем каталоге:

data <- read.csv("input.csv")
print(data)

Когда мы выполняем приведенный выше код, он дает следующий результат —

      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

Анализ файла CSV

По умолчанию функция read.csv () выдает выходные данные в виде фрейма данных. Это можно легко проверить следующим образом. Также мы можем проверить количество столбцов и строк.

data <- read.csv("input.csv")

print(is.data.frame(data))
print(ncol(data))
print(nrow(data))

Когда мы выполняем приведенный выше код, он дает следующий результат —

[1] TRUE
[1] 5
[1] 8

Как только мы прочитаем данные во фрейме данных, мы сможем применить все функции, применимые к фреймам данных, как объяснено в следующем разделе.

Получи максимальную зарплату

# Create a data frame.
data <- read.csv("input.csv")

# Get the max salary from data frame.
sal <- max(data$salary)
print(sal)

Когда мы выполняем приведенный выше код, он дает следующий результат —

[1] 843.25

Получить информацию о человеке с максимальной зарплатой

Мы можем получить строки, соответствующие определенным критериям фильтра, аналогичным предложению SQL where.

# 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)

Когда мы выполняем приведенный выше код, он дает следующий результат —

      id    name  salary  start_date    dept
5     NA    Gary  843.25  2015-03-27    Finance

Получить всех людей, работающих в отделе ИТ

# Create a data frame.
data <- read.csv("input.csv")

retval <- subset( data, dept == "IT")
print(retval)

Когда мы выполняем приведенный выше код, он дает следующий результат —

       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

Получить людей в отдел ИТ, чья зарплата превышает 600

# Create a data frame.
data <- read.csv("input.csv")

info <- subset(data, salary > 600 & dept == "IT")
print(info)

Когда мы выполняем приведенный выше код, он дает следующий результат —

       id   name      salary   start_date   dept
1      1    Rick      623.3    2012-01-01   IT
3      3    Michelle  611.0    2014-11-15   IT

Получите людей, которые присоединились к или после 2014

# Create a data frame.
data <- read.csv("input.csv")

retval <- subset(data, as.Date(start_date) > as.Date("2014-01-01"))
print(retval)

Когда мы выполняем приведенный выше код, он дает следующий результат —

       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

Запись в файл CSV

R может создать CSV-файл из существующего фрейма данных. Функция write.csv () используется для создания файла csv. Этот файл создается в рабочем каталоге.

# 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)

Когда мы выполняем приведенный выше код, он дает следующий результат —

  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

Здесь столбец X взят из набора данных newper. Это можно удалить, используя дополнительные параметры при записи файла.

# 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)

Когда мы выполняем приведенный выше код, он дает следующий результат —