Skip to content
Related Articles

Related Articles

Indexing and Slicing Data Frames in R

View Discussion
Improve Article
Save Article
  • Last Updated : 11 Jul, 2022
View Discussion
Improve Article
Save Article

In this article let’s discuss about indexing and slicing the Data Frames in R.

Indexing the Data Frame

By indexing the Data Frame we will get the particular column data. Indexing can be done by specifying column name in square brackets. The syntax for indexing the data frame is-

dataframeName[“columnName”]

Example: In this example let’s create a Data Frame “stats” that contains runs scored and wickets taken by a player and perform indexing on the data frame to extract runs scored by players.

R




# create a data frame 
stats <- data.frame(player=c('A', 'B', 'C', 'D'),
                runs=c(100, 200, 408, NA),
                wickets=c(17, 20, NA, 5))
  
print("stats Dataframe")
stats
  
# fetch data in certain column
stats["runs"]


Output:

"stats Dataframe"
  player runs wickets
1      A  100      17
2      B  200      20
3      C  408      NA
4      D   NA       5
  runs
1  100
2  200
3  408
4   NA

Slicing the Data Frame

Slicing the Data Frame gives the required rows and columns. This can be done by three ways. They are listed below-

  • Slicing with [ , ]
  • Slicing with logical vectors.
  • Slicing with subset().

Slicing with [ , ]

Slicing the data frame with [ , ] returns data of specified rows and columns. The syntax of this is mentioned below-

dataframeName[ fromRow : toRow , columnNumber]

Example: 

In the below code we performed slicing on the data frame to fetch specified rows and columns.

R




# create a data frame 
stats <- data.frame(player=c('A', 'B', 'C', 'D'),
                runs=c(100, 200, 408, NA),
                wickets=c(17, 20, NA, 5))
  
print("stats Dataframe")
stats
  
# fetch 2,3 rows and 1,2 columns
stats[2:3,c(1,2)]
  
# fetch 1:3 rows of 1st column
cat("players - ")
stats[1:3,1]


Output

"stats Dataframe"
  player runs wickets
1      A  100      17
2      B  200      20
3      C  408      NA
4      D   NA       5
  player runs
2      B  200
3      C  408
players - [1] "A" "B" "C"

Slicing with logical vectors

We can perform slicing on the data by specifying the logical conditions. It is used to get the filtered data.

Example:

 In this example, we fetch the records of players who scored more than 100 runs.

R




# create a data frame 
stats <- data.frame(player=c('A', 'B', 'C', 'D'),
                runs=c(100, 200, 408, 23),
                wickets=c(17, 20, 3, 5))
  
print("stats Dataframe")
stats
  
# fetch player details who scores 
# more than 100 runs
batsmens<-stats[stats$runs>100,]
batsmens


 Output

"stats Dataframe"
  player runs wickets
1      A  100      17
2      B  200      20
3      C  408       3
4      D   23       5
  player runs wickets
2      B  200      20
3      C  408       3

Slicing with subset() 

We can slice data frames using subset() method. The subset method accepts the data, filter logic to slice and the columns to fetch. The syntax of slicing with subset is –

subset( x = dataframe, subset = filter_logic, select=c(columnNames))

Example: 

In the below code we fetched the players who picked more than 5 wickets from the data frame stats by slicing the data frame using subset method.

R




# create a data frame 
stats <- data.frame(player=c('A', 'B', 'C', 'D'),
                runs=c(100, 200, 408, 23),
                wickets=c(17, 20, 3, 5))
  
print("stats Dataframe")
stats
  
# fetch player details who pick 
# more than 5 wickets
subset(x=stats, subset=wickets>5, select=c(player,wickets))


Output

"stats Dataframe"
  player runs wickets
1      A  100      17
2      B  200      20
3      C  408       3
4      D   23       5
  player wickets
1      A      17
2      B      20

My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!