Here, we show how to delete, name or rename columns and rows of data objects in R using the subset(), colnames() and rownames() functions.

All the functions are from the 'base" package.

See also subsetting and filtering data.

Summary Functions for Deleting or Naming Columns and Rows in R
Function Usage
subset() Delete or remove columns
colnames() Set or reset column names
rownames() Set or reset row names

1 Delete or Remove Columns in R

Using the dataframe below:

dtf = data.frame(Player = c("Dave", "Yiv", "Rao", "Tio"),
                 Group = c("A", "A", "B", "C"),
                 Status = c("Y", "Y", "N", "Y"),
                 Age = c(18, 19, 17, 19),
                 Score = c(15, 18, 14, 16))
dtf
  Player Group Status Age Score
1   Dave     A      Y  18    15
2    Yiv     A      Y  19    18
3    Rao     B      N  17    14
4    Tio     C      Y  19    16

Delete or remove columns by name:

# Remove the Age column
dtf1 = subset(dtf, select = - Age)
dtf1
  Player Group Status Score
1   Dave     A      Y    15
2    Yiv     A      Y    18
3    Rao     B      N    14
4    Tio     C      Y    16
# Remove the Status and Age columns
dtf2 = subset(dtf, select = - c(Status, Age))
dtf2
  Player Group Score
1   Dave     A    15
2    Yiv     A    18
3    Rao     B    14
4    Tio     C    16

Or alternatively, delete or remove columns by column numbers:

# Remove the Age column
dtf1 = dtf[, -4]
dtf1
  Player Group Status Score
1   Dave     A      Y    15
2    Yiv     A      Y    18
3    Rao     B      N    14
4    Tio     C      Y    16
# Remove the Status and Age columns
dtf2 = dtf[, - c(3, 4)] # or dtf2 = dtf[, -3:4]
dtf2
  Player Group Score
1   Dave     A    15
2    Yiv     A    18
3    Rao     B    14
4    Tio     C    16

2 Delete or Remove Rows in R

See dtf above.

Delete some rows by value:

# Remove "Status = N" row
dtf1 = subset(dtf, Status != "N") # != means "not equal to"
dtf1
  Player Group Status Age Score
1   Dave     A      Y  18    15
2    Yiv     A      Y  19    18
4    Tio     C      Y  19    16
# Remove "Status = N" or "Group = C" rows
dtf2 = subset(dtf, Status != "N" & Group != "C")
dtf2
  Player Group Status Age Score
1   Dave     A      Y  18    15
2    Yiv     A      Y  19    18

Or alternatively, delete or remove rows by row numbers:

# Remove "Status = N" row
dtf1 = dtf[-3, ]
dtf1
  Player Group Status Age Score
1   Dave     A      Y  18    15
2    Yiv     A      Y  19    18
4    Tio     C      Y  19    16
# Remove "Status = N" or "Group = C" rows
dtf2 = dtf[-3:-4, ] # or dtf2 = dtf[-c(3, 4), ]
dtf2
  Player Group Status Age Score
1   Dave     A      Y  18    15
2    Yiv     A      Y  19    18

3 Set or Reset Columns and Row Names in R

See dtf above.

dtf1 = dtf
dtf1
  Player Group Status Age Score
1   Dave     A      Y  18    15
2    Yiv     A      Y  19    18
3    Rao     B      N  17    14
4    Tio     C      Y  19    16

Set or reset column names:

colnames(dtf1) = c("Name", "Class", "New?", "Age", "Points")
dtf1
  Name Class New? Age Points
1 Dave     A    Y  18     15
2  Yiv     A    Y  19     18
3  Rao     B    N  17     14
4  Tio     C    Y  19     16

Set or reset row names:

rownames(dtf1) = c("Player 1", "Player 2", "Player 3", "Player 4")
dtf1
         Name Class New? Age Points
Player 1 Dave     A    Y  18     15
Player 2  Yiv     A    Y  19     18
Player 3  Rao     B    N  17     14
Player 4  Tio     C    Y  19     16

Copyright © 2020 - 2024. All Rights Reserved by Stats Codes