Open In App

Indexing and Slicing Data Frames in R

Last Updated : 03 May, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

Indexing and Slicing are use for accessing and manipulating data.

  • Indexing: Accessing specific elements (rows or columns) in data structures.
  • Slicing: Extracting subsets of data based on conditions or indices.

In R, indexing a data frame allows you to retrieve specific columns by their names:

dataframeName["columnName"]

Example: Indexing a Column

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:

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

In this example we 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.

Slicing Data Frames

The process of extracting or accessing particular subsets or sections of a vector, matrix or data frame depending on predetermined criteria is known as slicing.

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

dataframeName[ fromRow : toRow , columnNumber]

1. Slicing with [ , ]

The [ , ] method is used to select rows and columns by their indices.

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

[1] "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

[1] "A" "B" "C"

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

2. Slicing with Logical Vectors

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

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

[1] "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

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

3. Slicing with subset()

We can slice data frames using the subset() method. The subset method accepts the data, filter logic to slice and the columns to fetch.

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

[1] "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

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

Related Article:


Next Article
Article Tags :

Similar Reads