JSON Files in R: Reading and Writing (2019)

Introduction to JSON Files in R

A JSON file stores simple data structures and objects in JavaScript Object Notation (JSON) format. JSON is a standard data lightweight interchange format primarily used for transmitting data between a web application and a server. The JSON file is a text file that is language-independent, self-describing, and easy to understand. In this article, we will discuss reading and writing a JSON file in R Language in detail using the R package “rjson“.

Since JSON file format is text only, it can be sent to and from a server and used as a data format by any programming language. The data in the JSON file is nested and hierarchical. Let us start reading and writing JSON files in R.

Creating JSON File

Let’s create a JSON file. Copy the following lines into a text editor such as Notepad. Save the file with a .json extension and choose the file type as all files(*.*). Let the file name be “data.json”, stored on the “D:” drive.

{ 
"ID":["1","2","3","4","5","6","7","8" ],
"Name":["Rick","Dan","Michelle","Ryan","Gary","Nina","Simon","Guru" ],
"Salary":["623.3","515.2","611","729","843.25","578","632.8","722.5" ],
"StartDate":[ "1/1/2012","9/23/2013","11/15/2014","5/11/2014","3/27/2015","5/21/2013",
"7/30/2013","6/17/2014"],
"Dept":[ "IT","Operations","IT","HR","Finance","IT","Operations","Finance"]
}
Reading and Writing JSON files in R

Installing rjson R Package

The R language can also read the JSON files using the rjson package. To read a JSON data file, First, install the rjson package. Issue the following command in the R console, to install the rjson package.

install.packages("rjson")

The rjson package needs to be loaded after installation of the package.

Reading JSON Files in R

To read a JSON file, the rjson package needs to be loaded. Use the fromJSON( ) function to read the file.

# Give the data file name to the function.
result <- fromJSON(file = "D:\\data.json")
# Print the result.
print(result)

The JSON file now can be converted to a Data Frame for further analysis using the as.data.frame() function.

# Convert JSON file to a data frame.
json_data_frame <- as.data.frame(result)
print(json_data_frame)

Writing JSON objects to .Json file

To write JSON Object to file, the toJSON() function from the rjson library can be used to prepare a JSON object and then use the write() function for writing the JSON object to a local file.

Let’s create a list of objects as follows

list1 <- vector(mode="list", length=2)
list1[[1]] <- c("apple", "banana", "rose")
list1[[2]] <- c("fruit", "fruit", "flower")

read the above list to JSON

jsonData <- toJSON(list1)

write JSON object to a file

write(jsonData, "output.json")

Read more about importing and exporting data in R: see the post

MCQs General Knowledge

Input Data in R Language: c() & scan() Function

Introduction to Input Data in R Language

There are many ways to input data in R Language. Here, I will concentrate only on typing data directly at the keyboard using c() and scan() functions, which are very common ways to input data in R language.

Traditional statistical computer software such as Minitab, SPSS, and SAS, etc., are designed to transform rectangular datasets (a dataset whose rows represent the observations and columns represent the variables) into printed reports and graphs. However, R and S languages are designed to transform data objects into other data objects (such as reports, and graphs).

S and R language both support rectangular datasets, in the form of data frames and other data structures. Here we will learn to know about data in R to work efficiently as a statistical data analyst.

Data Input Functions in R

There are many ways to input data in R and S-Plus. Let us learn to type data directly on the keyboard.

Input Data Using c() Function

The best choice is to enter small datasets directly on the keyboard. Remember that it is impractical to enter a large data set directly at the keyboard.

Let us use the c() function to enter the vector of numbers directly as:

x    <- c(1, 3, 5, 7, 9)
char <- c('a', 'b', 'c', 'd')
TF   <- c(TRUE, FALSE)
Input Data in R Language

Note that the character strings can be directly inputted in single or double quotation marks. For example, "a" and 'a' both are equivalent.

Input Data Using Scan() Function in R

It is also very convenient to use the scan() function in R, which prompts with the index of the next entry.  Consider the example,

xyz <- scan()
1: 10 20 30 35
5: 40 35 25
8: 9 100 50
11:
Read 10 items

The number before the colon on each of the inputted lines is the index of the next data entry point (observation) to be entered. Note that entering a blank line terminates the scan() function input behavior.

Click the following links to learn about data entry (import and export internal and external data) in R Language

R FAQS https://rfaqs.com

Online MCQs Test Preparation Website with Answers

Reading and Writing Data in R: A Quick Guide

For dealing with data, one may need “reading and writing data in R”. Therefore, it is important to discuss reading and writing data in R. It is also important to learn about reading and writing data files in the R environment.

Reading and Writing Data in R Language

Reading Data in R

  • read.table(), and read.csv(), for reading tabular data
  • readLines() for reading lines of a text file
  • source() for reading in R code files (inverse of dump)
  • dget() for reading in R code files (inverse of dput)
  • load() for reading in saved workspaces.

Writing Data to File in R

Following are a few functions for writing (exporting) data to files in R Language.

  • write.table() in R, and write.csv() export data to a wider range of file formats including CSV and tab-delimited.
  • writeLines() write text lines to a text-mode connection.
  • dump() takes a vector of names of R objects and produces text representations of the objects on a file (or connection). A dump file can usually be sourced into another R session.
  • dput() writes an ASCII text representation of an R object to a file (or connection) or uses one to recreate the object.
  • save() writes an external representation of R objects to the specified file.

Reading Data Files with read.table()

The read.table() function in R is one of the most commonly used functions for reading data into R. It has a few important arguments.

  • file, the name of a file, or a connection
  • header, logical indicating if the file has a header line
  • sep, a string indicating how the columns are separated
  • colClasses, a character vector indicating the class of each column in the data set
  • nrows, the number of rows in the dataset
  • comment.char, a character string indicating the comment character
  • skip, the number of lines to skip from the beginning
  • stringsAsFactors, should character variables be coded as factors?

read.table() and read.csv() Examples

data <- read.table("foo.txt")
data <- read.table("D:\\datafiles\\mydata.txt")
data <- read.csv("D:\\datafiles\\mydata.csv")

R will automatically skip lines that begin with a symbol # and figure out how many rows there are (and how much memory needs to be allocated). R also figures out what type of variable is in each table column.

Writing Data Files with write.table() in R

A few important arguments are usually used in function write.table() in R.

  • x, the object to be written, typically a data frame
  • file, the name of the file that the data are to be written to
  • sep, the field separator string
  • col.names, a logical value indicating whether the column names of x are to be written along with x, or a character vector of column names to be written
  • row.names, a logical value indicating whether the row names of x are to be written along with x, or a character vector of row names to be written
  • na, the string to use for missing values in the data

write.table() and write.csv() Examples

The following are few examples about saving data in CSV or TXT files.

x <- data.frame(a = 5, b = 10, c = pi)

write.table(x, file = "data.csv", sep = ",")
write.table(x, "c:\\mydata.txt", sep = "\t")
write.csv(x, file = "data.csv")
Rfaqs: Reading and Writing Data in R

Importing and exporting data in R

SPSS Data Analysis