R Programming: Sort a Data Frame by Multiple Columns
Write a R program to sort a given data frame by multiple column(s).
Sample Solution :
R Programming Code :
# Create a data frame named 'exam_data' with columns 'name', 'score', 'attempts', and 'qualify'
exam_data = data.frame(
# Define the 'name' column with a vector of names
name = c('Anastasia', 'Dima', 'Katherine', 'James', 'Emily', 'Michael', 'Matthew', 'Laura', 'Kevin', 'Jonas'),
# Define the 'score' column with a vector of scores
score = c(12.5, 9, 16.5, 12, 9, 20, 14.5, 13.5, 8, 19),
# Define the 'attempts' column with a vector of attempts
attempts = c(1, 3, 2, 3, 2, 3, 1, 1, 2, 1),
# Define the 'qualify' column with a vector of qualification statuses
qualify = c('yes', 'no', 'yes', 'no', 'no', 'yes', 'yes', 'no', 'no', 'yes')
)
# Print a message indicating the original data frame
print("Original dataframe:")
# Print the original data frame to the console
print(exam_data)
# Print a message indicating that the data frame will be sorted by 'name' and 'score' columns
print("DataFrame after sorting 'name' and 'score' columns:")
# Sort the data frame by 'name' and 'score' columns in ascending order
exam_data = exam_data[with(exam_data, order(name, score)), ]
# Print the sorted data frame to the console
print(exam_data)
Output:
[1] "Original dataframe:" name score attempts qualify 1 Anastasia 12.5 1 yes 2 Dima 9.0 3 no 3 Katherine 16.5 2 yes 4 James 12.0 3 no 5 Emily 9.0 2 no 6 Michael 20.0 3 yes 7 Matthew 14.5 1 yes 8 Laura 13.5 1 no 9 Kevin 8.0 2 no 10 Jonas 19.0 1 yes [1] "dataframe after sorting 'name' and 'score' columns:" name score attempts qualify 1 Anastasia 12.5 1 yes 2 Dima 9.0 3 no 5 Emily 9.0 2 no 4 James 12.0 3 no 10 Jonas 19.0 1 yes 3 Katherine 16.5 2 yes 9 Kevin 8.0 2 no 8 Laura 13.5 1 no 7 Matthew 14.5 1 yes 6 Michael 20.0 3 yes
Explanation:
- Create Data Frame:
- exam_data = data.frame(...): Creates a data frame named exam_data with four columns: name, score, attempts, and qualify.
- name = c(...): Contains names of students.
- score = c(...): Contains scores of the students.
- attempts = c(...): Contains the number of attempts each student made.
- qualify = c(...): Contains whether each student qualifies or not.
- Print Original Data Frame:
- print("Original dataframe:"): Prints a message indicating that the original data frame is being displayed.
- print(exam_data): Displays the original exam_data data frame.
- Sort Data Frame:
- print("dataframe after sorting 'name' and 'score' columns:"): Prints a message indicating that the data frame is being sorted by the name and score columns.
- exam_data = exam_data[with(exam_data, order(name, score)), ]: Sorts exam_data first by name in ascending alphabetical order, and then by score in ascending numerical order for rows with the same name.
- Print Sorted Data Frame:
- print(exam_data): Displays the sorted exam_data data frame.
R Programming Code Editor:
Have another way to solve this solution? Contribute your code (and comments) through Disqus.
Previous: Write a R program to drop row(s) by number from a given data frame.
Next: Write a R program to create inner, outer, left, right join(merge) from given two data frames.
Test your Programming skills with w3resource's quiz.
What is the difficulty level of this exercise?
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics