International College of Digital Innovation, CMU
June 23, 2026
Data Stucture in R (ref: First Steps in R)
Input
viewof distTypeDF = Inputs.radio(
[
"Create / Inspect",
"Access Columns & Rows",
"Add / Remove Columns",
"Filter / Subset Rows",
"Select Columns (Base R)",
"Summary by Column",
"Sort / Order / Rank",
"Merge / Join Data Frames",
"Aggregate / Group Summary",
"Apply & Transform Columns",
"Handle Missing Data (NA)",
"Factor Variables",
"Convert Types",
"Reshape: wide ↔ long",
"Bind Rows / Cols",
"Plot Data Frame"
],
{ label: "Data Frame Topics", value: "Create / Inspect", inline: true }
)In R, a data frame is a fundamental data structure used for storing and organizing data in a tabular format.
It’s similar to a table in a database or a spreadsheet in which data is arranged in rows and columns.
Here are a few key points about data frames in R:
Tabular Structure: Data frames consist of rows and columns where each column can hold different types of data (numeric, character, factor, etc.). Rows represent observations, while columns represent variables or attributes.
Mixed Data Types: Unlike matrices, data frames can contain columns with different data types. For instance, one column might contain numeric values, another might have strings, and another might hold categorical data.
Data Manipulation: Data frames allow for easy manipulation, subsetting, and transformation of data using various functions and operations provided by R.
Importing and Exporting Data: R provides functions to import data from various file formats (such as CSV, Excel, etc.) into data frames, making it convenient to work with external datasets. Similarly, data frames can be exported to these formats as well.
The data frame is created from multiple vector objects in R by using the data.frame() function.
Example
provide alternative names for variables in a data frame.
We can check the structure of a data frame with the str() function.
The results show the following:
The number of variables and observation values in the data frame.
The types of variables: character, numeric, integer, logical, factor, etc.
The datatable() function is used to display the data frame in an interactive style and is very useful for HTML output.
Install the DT package
By using datatable() function
The colnames() function in R is used to get or set the column names of a matrix or data frame.
Example of colnames() function usage
Change the variable “is_Thai” to “is_Chinese”
Use the cbind() function
Another way to add a new variable to the data frame using
We can access any value from the data frame in a manner similar to accessing a matrix.
First observation value in the first variable.
All observation values in the first variable.
First 5 observations value from every variables.
Observation 1, 3, and 5 from the variable 1 and 3.
The data frame command to access one variable from the data frame.
Show every value from the second variable.
Show the first 5 observations from the second variable.
All variables in the data frame Data.
Please Run this code again
To delete the variable letter.
head() function: Return the first n parts of the data frame object.
Show the first 6 observations
Show the first 3 observations
tail() function: Return the last n parts of the data frame object.
Show the last 6 observations
Show the last 4 observations
summary(): Basic descriptive statistics.
For export a CSV file, use the readr package.
For export an XLSX file, use the writexl package.
Load library (Put on the top of your R script)
Export a data frame “Data” to “Data152.csv”
Export a data frame “Data” to “Data152.xlsx”
For import a CSV file to R, use the read.csv() function.
For import a XLSX file to R, use the readxl package.
Example
Both tibble and data frame are structures used to store tabular data in R, but they differ in behavior and functionality in several ways.
Key Differences between tibble and data frame:
Printing Output
data frame: Displays all the data when printed, which can be overwhelming if the dataset is large.
tibble: Prints in a more compact format, showing only a few rows and columns that fit the screen, making it cleaner and easier to read.
Handles large datasets better.
More intuitive printing and subsetting behavior.
Reduces errors from partial name matching.
Integrates seamlessly with the tidyverse suite of packages.
Works well with base R functions.
Familiar and widely used for general R programming tasks.
No need to load additional packages to work with it.
Subsetting a data frame in R is crucial for several reasons related to data analysis, manipulation, and visualization. Here are some key reasons why subsetting is essential:
1. Extracting Relevant Data:
Data frames often contain a large amount of data.
Subsetting allows you to extract and work with specific rows, columns, or subsets of data that are relevant to your analysis.
This helps in focusing on the relevant parts of the data without being overwhelmed by unnecessary information.
2. Filtering Data:
Subsetting enables you to filter rows based on specific conditions.
For example, you can extract all rows where a certain column meets a criteria (e.g., all customers from a specific city, all transactions above a certain amount).
3. Creating New Data Frames:
Subsetting allows you to create new data frames that contain only the subset of data you are interested in.
This can be useful for creating subsets for different analyses or for sharing specific parts of the data with others.
4. Data Manipulation:
Once you have subsets of data, you can perform various operations such as calculating summary statistics, aggregating data, or creating plots.
Subsetting helps in efficiently manipulating data for these tasks.
5. Improving Performance:
Working with smaller subsets of data can improve the performance of your analysis, especially when dealing with large datasets.
Subsetting allows you to focus computations and visualizations on smaller portions of the data, which can be processed more quickly.
Selecting Columns: Select only some variable in the data frame.
Filtering Rows: filters rows based on a condition specified in condition.
Slicing: df[row_indices, col_indices] selects specific rows and columns based on indices or logical conditions.(Previous topic)
1. Selecting rows from the mtcars dataset where mpg > 20
2. Selecting rows from the mtcars dataset where mpg > 20 and mpg < 25.
3. From mtcars select the data with mpg > 20 and mpg < 25, then select variable mpg, cyl and disp
The pipe operator |> takes the output from the expression on its left-hand side and passes it as the first argument to the function call on its right-hand side.
This allows you to chain multiple function calls together, where each function operates on the result of the previous one.
Shortcuts Key
MAC: command + shift + m
WINDOWS: crtl +shift + m
Camparing between standard code and using
The standard code
Use pipe operator
Important
We’ll explore the advantages of the pipe operator further in the data wrangling chapter.
Benefits of Using the Pipe Operator
Readability: Code written with the pipe operator reads left-to-right, making it easier to understand the flow of operations.
Code Structure: It allows for a more modular approach to coding, where each step in a data manipulation or analysis pipeline is clear and separate.
Debugging: It simplifies debugging because you can comment out or inspect intermediate steps easily.
Avoiding Nested Functions: It reduces the need for nested function calls (f(g(h(x)))), making the code more readable and maintainable.
Create a data frame named my_data with columns ID, Name, and Age.
ID Name Age
1 1 Alice 25
2 2 Bob 30
3 3 Charlie 35
4 4 David 40
5 5 Eva 45
viewof var_df1_create_dataframe_1 = html`<input type="text" class="ojs-hidden-df1_create_dataframe" data-ojs-proxy="df1_create_dataframe::var_df1_create_dataframe_1" value="">`
viewof var_df1_create_dataframe_2 = html`<input type="text" class="ojs-hidden-df1_create_dataframe" data-ojs-proxy="df1_create_dataframe::var_df1_create_dataframe_2" value="">`
viewof var_df1_create_dataframe_3 = html`<input type="text" class="ojs-hidden-df1_create_dataframe" data-ojs-proxy="df1_create_dataframe::var_df1_create_dataframe_3" value="">`
viewof var_df1_create_dataframe_4 = html`<input type="text" class="ojs-hidden-df1_create_dataframe" data-ojs-proxy="df1_create_dataframe::var_df1_create_dataframe_4" value="">`
viewof var_df1_create_dataframe_run = html`<input type="number" class="ojs-hidden-df1_create_dataframe" data-ojs-run="df1_create_dataframe" value="0">`Access the Name column from my_data.
[1] "Alice" "Bob" "Charlie" "David" "Eva"
viewof var_df2_access_column_1 = html`<input type="text" class="ojs-hidden-df2_access_column" data-ojs-proxy="df2_access_column::var_df2_access_column_1" value="">`
viewof var_df2_access_column_2 = html`<input type="text" class="ojs-hidden-df2_access_column" data-ojs-proxy="df2_access_column::var_df2_access_column_2" value="">`
viewof var_df2_access_column_run = html`<input type="number" class="ojs-hidden-df2_access_column" data-ojs-run="df2_access_column" value="0">`Subset the rows where Age is greater than 30.
ID Name Age
3 3 Charlie 35
4 4 David 40
5 5 Eva 45
viewof var_df3_subset_rows_condition_1 = html`<input type="text" class="ojs-hidden-df3_subset_rows_condition" data-ojs-proxy="df3_subset_rows_condition::var_df3_subset_rows_condition_1" value="">`
viewof var_df3_subset_rows_condition_2 = html`<input type="text" class="ojs-hidden-df3_subset_rows_condition" data-ojs-proxy="df3_subset_rows_condition::var_df3_subset_rows_condition_2" value="">`
viewof var_df3_subset_rows_condition_3 = html`<input type="text" class="ojs-hidden-df3_subset_rows_condition" data-ojs-proxy="df3_subset_rows_condition::var_df3_subset_rows_condition_3" value="">`
viewof var_df3_subset_rows_condition_4 = html`<input type="text" class="ojs-hidden-df3_subset_rows_condition" data-ojs-proxy="df3_subset_rows_condition::var_df3_subset_rows_condition_4" value="">`
viewof var_df3_subset_rows_condition_run = html`<input type="number" class="ojs-hidden-df3_subset_rows_condition" data-ojs-run="df3_subset_rows_condition" value="0">`Add a new column named Salary to my_data with values 50000, 55000, 60000, 65000, and 70000.
ID Name Age Salary
1 1 Alice 25 50000
2 2 Bob 30 55000
3 3 Charlie 35 60000
4 4 David 40 65000
5 5 Eva 45 70000
viewof var_df4_add_column_1 = html`<input type="text" class="ojs-hidden-df4_add_column" data-ojs-proxy="df4_add_column::var_df4_add_column_1" value="">`
viewof var_df4_add_column_2 = html`<input type="text" class="ojs-hidden-df4_add_column" data-ojs-proxy="df4_add_column::var_df4_add_column_2" value="">`
viewof var_df4_add_column_3 = html`<input type="text" class="ojs-hidden-df4_add_column" data-ojs-proxy="df4_add_column::var_df4_add_column_3" value="">`
viewof var_df4_add_column_run = html`<input type="number" class="ojs-hidden-df4_add_column" data-ojs-run="df4_add_column" value="0">`Rename columns ID to EmployeeID and Name to EmployeeName. Show only rows 1 to 3.
EmployeeID EmployeeName Age Salary
1 1 Alice 25 50000
2 2 Bob 30 55000
3 3 Charlie 35 60000
viewof var_df5_rename_columns_1 = html`<input type="text" class="ojs-hidden-df5_rename_columns" data-ojs-proxy="df5_rename_columns::var_df5_rename_columns_1" value="">`
viewof var_df5_rename_columns_2 = html`<input type="text" class="ojs-hidden-df5_rename_columns" data-ojs-proxy="df5_rename_columns::var_df5_rename_columns_2" value="">`
viewof var_df5_rename_columns_3 = html`<input type="text" class="ojs-hidden-df5_rename_columns" data-ojs-proxy="df5_rename_columns::var_df5_rename_columns_3" value="">`
viewof var_df5_rename_columns_4 = html`<input type="text" class="ojs-hidden-df5_rename_columns" data-ojs-proxy="df5_rename_columns::var_df5_rename_columns_4" value="">`
viewof var_df5_rename_columns_5 = html`<input type="text" class="ojs-hidden-df5_rename_columns" data-ojs-proxy="df5_rename_columns::var_df5_rename_columns_5" value="">`
viewof var_df5_rename_columns_6 = html`<input type="text" class="ojs-hidden-df5_rename_columns" data-ojs-proxy="df5_rename_columns::var_df5_rename_columns_6" value="">`
viewof var_df5_rename_columns_run = html`<input type="number" class="ojs-hidden-df5_rename_columns" data-ojs-run="df5_rename_columns" value="0">`Remove the Salary column from my_data.
ID Name Age
1 1 Alice 25
2 2 Bob 30
3 3 Charlie 35
4 4 David 40
5 5 Eva 45
viewof var_df6_remove_column_1 = html`<input type="text" class="ojs-hidden-df6_remove_column" data-ojs-proxy="df6_remove_column::var_df6_remove_column_1" value="">`
viewof var_df6_remove_column_2 = html`<input type="text" class="ojs-hidden-df6_remove_column" data-ojs-proxy="df6_remove_column::var_df6_remove_column_2" value="">`
viewof var_df6_remove_column_run = html`<input type="number" class="ojs-hidden-df6_remove_column" data-ojs-run="df6_remove_column" value="0">`Sort my_data by the Age column in descending order.
ID Name Age
5 5 Eva 45
4 4 David 40
3 3 Charlie 35
2 2 Bob 30
1 1 Alice 25
viewof var_df7_sort_dataframe_1 = html`<input type="text" class="ojs-hidden-df7_sort_dataframe" data-ojs-proxy="df7_sort_dataframe::var_df7_sort_dataframe_1" value="">`
viewof var_df7_sort_dataframe_2 = html`<input type="text" class="ojs-hidden-df7_sort_dataframe" data-ojs-proxy="df7_sort_dataframe::var_df7_sort_dataframe_2" value="">`
viewof var_df7_sort_dataframe_3 = html`<input type="text" class="ojs-hidden-df7_sort_dataframe" data-ojs-proxy="df7_sort_dataframe::var_df7_sort_dataframe_3" value="">`
viewof var_df7_sort_dataframe_4 = html`<input type="text" class="ojs-hidden-df7_sort_dataframe" data-ojs-proxy="df7_sort_dataframe::var_df7_sort_dataframe_4" value="">`
viewof var_df7_sort_dataframe_run = html`<input type="number" class="ojs-hidden-df7_sort_dataframe" data-ojs-run="df7_sort_dataframe" value="0">`Create my_data2 and merge it with my_data using EmployeeID.
EmployeeID EmployeeName Age Department
1 1 Alice 25 HR
2 2 Bob 30 IT
3 3 Charlie 35 Finance
4 4 David 40 Marketing
5 5 Eva 45 Sales
viewof var_df8_merge_dataframes_1 = html`<input type="text" class="ojs-hidden-df8_merge_dataframes" data-ojs-proxy="df8_merge_dataframes::var_df8_merge_dataframes_1" value="">`
viewof var_df8_merge_dataframes_2 = html`<input type="text" class="ojs-hidden-df8_merge_dataframes" data-ojs-proxy="df8_merge_dataframes::var_df8_merge_dataframes_2" value="">`
viewof var_df8_merge_dataframes_3 = html`<input type="text" class="ojs-hidden-df8_merge_dataframes" data-ojs-proxy="df8_merge_dataframes::var_df8_merge_dataframes_3" value="">`
viewof var_df8_merge_dataframes_4 = html`<input type="text" class="ojs-hidden-df8_merge_dataframes" data-ojs-proxy="df8_merge_dataframes::var_df8_merge_dataframes_4" value="">`
viewof var_df8_merge_dataframes_5 = html`<input type="text" class="ojs-hidden-df8_merge_dataframes" data-ojs-proxy="df8_merge_dataframes::var_df8_merge_dataframes_5" value="">`
viewof var_df8_merge_dataframes_6 = html`<input type="text" class="ojs-hidden-df8_merge_dataframes" data-ojs-proxy="df8_merge_dataframes::var_df8_merge_dataframes_6" value="">`
viewof var_df8_merge_dataframes_7 = html`<input type="text" class="ojs-hidden-df8_merge_dataframes" data-ojs-proxy="df8_merge_dataframes::var_df8_merge_dataframes_7" value="">`
viewof var_df8_merge_dataframes_run = html`<input type="number" class="ojs-hidden-df8_merge_dataframes" data-ojs-run="df8_merge_dataframes" value="0">`Calculate the mean age of employees in my_data.
[1] 35
viewof var_df9_summary_statistics_1 = html`<input type="text" class="ojs-hidden-df9_summary_statistics" data-ojs-proxy="df9_summary_statistics::var_df9_summary_statistics_1" value="">`
viewof var_df9_summary_statistics_2 = html`<input type="text" class="ojs-hidden-df9_summary_statistics" data-ojs-proxy="df9_summary_statistics::var_df9_summary_statistics_2" value="">`
viewof var_df9_summary_statistics_3 = html`<input type="text" class="ojs-hidden-df9_summary_statistics" data-ojs-proxy="df9_summary_statistics::var_df9_summary_statistics_3" value="">`
viewof var_df9_summary_statistics_run = html`<input type="number" class="ojs-hidden-df9_summary_statistics" data-ojs-run="df9_summary_statistics" value="0">`Select EmployeeName and Department columns for employees in the IT department.
EmployeeName Department
2 Bob IT
viewof var_df10_filter_select_columns_1 = html`<input type="text" class="ojs-hidden-df10_filter_select_columns" data-ojs-proxy="df10_filter_select_columns::var_df10_filter_select_columns_1" value="">`
viewof var_df10_filter_select_columns_2 = html`<input type="text" class="ojs-hidden-df10_filter_select_columns" data-ojs-proxy="df10_filter_select_columns::var_df10_filter_select_columns_2" value="">`
viewof var_df10_filter_select_columns_3 = html`<input type="text" class="ojs-hidden-df10_filter_select_columns" data-ojs-proxy="df10_filter_select_columns::var_df10_filter_select_columns_3" value="">`
viewof var_df10_filter_select_columns_4 = html`<input type="text" class="ojs-hidden-df10_filter_select_columns" data-ojs-proxy="df10_filter_select_columns::var_df10_filter_select_columns_4" value="">`
viewof var_df10_filter_select_columns_5 = html`<input type="text" class="ojs-hidden-df10_filter_select_columns" data-ojs-proxy="df10_filter_select_columns::var_df10_filter_select_columns_5" value="">`
viewof var_df10_filter_select_columns_run = html`<input type="number" class="ojs-hidden-df10_filter_select_columns" data-ojs-run="df10_filter_select_columns" value="0">`Use rbind() to combine df1 and df2 into a single data frame.
A B
1 1 X
2 2 Y
3 3 Z
4 4 W
5 5 V
6 6 U
viewof var_df11_row_binding_1 = html`<input type="text" class="ojs-hidden-df11_row_binding" data-ojs-proxy="df11_row_binding::var_df11_row_binding_1" value="">`
viewof var_df11_row_binding_2 = html`<input type="text" class="ojs-hidden-df11_row_binding" data-ojs-proxy="df11_row_binding::var_df11_row_binding_2" value="">`
viewof var_df11_row_binding_3 = html`<input type="text" class="ojs-hidden-df11_row_binding" data-ojs-proxy="df11_row_binding::var_df11_row_binding_3" value="">`
viewof var_df11_row_binding_run = html`<input type="number" class="ojs-hidden-df11_row_binding" data-ojs-run="df11_row_binding" value="0">`Use cbind() to combine df1 and df2 into one data frame.
A B C D
1 1 X TRUE 10.5
2 2 Y FALSE 20.5
3 3 Z TRUE 30.5
viewof var_df12_column_binding_1 = html`<input type="text" class="ojs-hidden-df12_column_binding" data-ojs-proxy="df12_column_binding::var_df12_column_binding_1" value="">`
viewof var_df12_column_binding_2 = html`<input type="text" class="ojs-hidden-df12_column_binding" data-ojs-proxy="df12_column_binding::var_df12_column_binding_2" value="">`
viewof var_df12_column_binding_3 = html`<input type="text" class="ojs-hidden-df12_column_binding" data-ojs-proxy="df12_column_binding::var_df12_column_binding_3" value="">`
viewof var_df12_column_binding_run = html`<input type="number" class="ojs-hidden-df12_column_binding" data-ojs-run="df12_column_binding" value="0">`Use subset() to extract rows where column B is greater than 30.
A B
7 7 35
8 8 40
9 9 45
10 10 50
viewof var_df13_subsetting_condition_1 = html`<input type="text" class="ojs-hidden-df13_subsetting_condition" data-ojs-proxy="df13_subsetting_condition::var_df13_subsetting_condition_1" value="">`
viewof var_df13_subsetting_condition_2 = html`<input type="text" class="ojs-hidden-df13_subsetting_condition" data-ojs-proxy="df13_subsetting_condition::var_df13_subsetting_condition_2" value="">`
viewof var_df13_subsetting_condition_3 = html`<input type="text" class="ojs-hidden-df13_subsetting_condition" data-ojs-proxy="df13_subsetting_condition::var_df13_subsetting_condition_3" value="">`
viewof var_df13_subsetting_condition_4 = html`<input type="text" class="ojs-hidden-df13_subsetting_condition" data-ojs-proxy="df13_subsetting_condition::var_df13_subsetting_condition_4" value="">`
viewof var_df13_subsetting_condition_run = html`<input type="number" class="ojs-hidden-df13_subsetting_condition" data-ojs-run="df13_subsetting_condition" value="0">`Add new_row to df using rbind().
A B
1 1 X
2 2 Y
3 3 Z
4 4 W
viewof var_df14_add_new_row_1 = html`<input type="text" class="ojs-hidden-df14_add_new_row" data-ojs-proxy="df14_add_new_row::var_df14_add_new_row_1" value="">`
viewof var_df14_add_new_row_2 = html`<input type="text" class="ojs-hidden-df14_add_new_row" data-ojs-proxy="df14_add_new_row::var_df14_add_new_row_2" value="">`
viewof var_df14_add_new_row_3 = html`<input type="text" class="ojs-hidden-df14_add_new_row" data-ojs-proxy="df14_add_new_row::var_df14_add_new_row_3" value="">`
viewof var_df14_add_new_row_run = html`<input type="number" class="ojs-hidden-df14_add_new_row" data-ojs-run="df14_add_new_row" value="0">`Add new_column to df using cbind().
A B C
1 1 X 10
2 2 Y 20
3 3 Z 30
viewof var_df15_add_new_column_1 = html`<input type="text" class="ojs-hidden-df15_add_new_column" data-ojs-proxy="df15_add_new_column::var_df15_add_new_column_1" value="">`
viewof var_df15_add_new_column_2 = html`<input type="text" class="ojs-hidden-df15_add_new_column" data-ojs-proxy="df15_add_new_column::var_df15_add_new_column_2" value="">`
viewof var_df15_add_new_column_3 = html`<input type="text" class="ojs-hidden-df15_add_new_column" data-ojs-proxy="df15_add_new_column::var_df15_add_new_column_3" value="">`
viewof var_df15_add_new_column_run = html`<input type="number" class="ojs-hidden-df15_add_new_column" data-ojs-run="df15_add_new_column" value="0">`Add missing columns with NA values, then combine df1 and df2 using rbind().
A B C D
1 1 X NA <NA>
2 2 Y NA <NA>
3 3 Z NA <NA>
4 NA <NA> 4 W
5 NA <NA> 5 V
6 NA <NA> 6 U
viewof var_df16_combine_different_columns_1 = html`<input type="text" class="ojs-hidden-df16_combine_different_columns" data-ojs-proxy="df16_combine_different_columns::var_df16_combine_different_columns_1" value="">`
viewof var_df16_combine_different_columns_2 = html`<input type="text" class="ojs-hidden-df16_combine_different_columns" data-ojs-proxy="df16_combine_different_columns::var_df16_combine_different_columns_2" value="">`
viewof var_df16_combine_different_columns_3 = html`<input type="text" class="ojs-hidden-df16_combine_different_columns" data-ojs-proxy="df16_combine_different_columns::var_df16_combine_different_columns_3" value="">`
viewof var_df16_combine_different_columns_4 = html`<input type="text" class="ojs-hidden-df16_combine_different_columns" data-ojs-proxy="df16_combine_different_columns::var_df16_combine_different_columns_4" value="">`
viewof var_df16_combine_different_columns_5 = html`<input type="text" class="ojs-hidden-df16_combine_different_columns" data-ojs-proxy="df16_combine_different_columns::var_df16_combine_different_columns_5" value="">`
viewof var_df16_combine_different_columns_6 = html`<input type="text" class="ojs-hidden-df16_combine_different_columns" data-ojs-proxy="df16_combine_different_columns::var_df16_combine_different_columns_6" value="">`
viewof var_df16_combine_different_columns_7 = html`<input type="text" class="ojs-hidden-df16_combine_different_columns" data-ojs-proxy="df16_combine_different_columns::var_df16_combine_different_columns_7" value="">`
viewof var_df16_combine_different_columns_run = html`<input type="number" class="ojs-hidden-df16_combine_different_columns" data-ojs-run="df16_combine_different_columns" value="0">`Use subset() to select columns A and C from df.
A C
1 1 TRUE
2 2 FALSE
3 3 TRUE
4 4 FALSE
5 5 TRUE
viewof var_df17_subset_columns_1 = html`<input type="text" class="ojs-hidden-df17_subset_columns" data-ojs-proxy="df17_subset_columns::var_df17_subset_columns_1" value="">`
viewof var_df17_subset_columns_2 = html`<input type="text" class="ojs-hidden-df17_subset_columns" data-ojs-proxy="df17_subset_columns::var_df17_subset_columns_2" value="">`
viewof var_df17_subset_columns_3 = html`<input type="text" class="ojs-hidden-df17_subset_columns" data-ojs-proxy="df17_subset_columns::var_df17_subset_columns_3" value="">`
viewof var_df17_subset_columns_4 = html`<input type="text" class="ojs-hidden-df17_subset_columns" data-ojs-proxy="df17_subset_columns::var_df17_subset_columns_4" value="">`
viewof var_df17_subset_columns_5 = html`<input type="text" class="ojs-hidden-df17_subset_columns" data-ojs-proxy="df17_subset_columns::var_df17_subset_columns_5" value="">`
viewof var_df17_subset_columns_run = html`<input type="number" class="ojs-hidden-df17_subset_columns" data-ojs-run="df17_subset_columns" value="0">`Use a condition to select rows from df2, then combine them with df1 using rbind().
A B
1 1 X
2 2 Y
3 3 Z
21 5 V
31 6 U
viewof var_df18_conditional_row_binding_1 = html`<input type="text" class="ojs-hidden-df18_conditional_row_binding" data-ojs-proxy="df18_conditional_row_binding::var_df18_conditional_row_binding_1" value="">`
viewof var_df18_conditional_row_binding_2 = html`<input type="text" class="ojs-hidden-df18_conditional_row_binding" data-ojs-proxy="df18_conditional_row_binding::var_df18_conditional_row_binding_2" value="">`
viewof var_df18_conditional_row_binding_3 = html`<input type="text" class="ojs-hidden-df18_conditional_row_binding" data-ojs-proxy="df18_conditional_row_binding::var_df18_conditional_row_binding_3" value="">`
viewof var_df18_conditional_row_binding_4 = html`<input type="text" class="ojs-hidden-df18_conditional_row_binding" data-ojs-proxy="df18_conditional_row_binding::var_df18_conditional_row_binding_4" value="">`
viewof var_df18_conditional_row_binding_5 = html`<input type="text" class="ojs-hidden-df18_conditional_row_binding" data-ojs-proxy="df18_conditional_row_binding::var_df18_conditional_row_binding_5" value="">`
viewof var_df18_conditional_row_binding_6 = html`<input type="text" class="ojs-hidden-df18_conditional_row_binding" data-ojs-proxy="df18_conditional_row_binding::var_df18_conditional_row_binding_6" value="">`
viewof var_df18_conditional_row_binding_7 = html`<input type="text" class="ojs-hidden-df18_conditional_row_binding" data-ojs-proxy="df18_conditional_row_binding::var_df18_conditional_row_binding_7" value="">`
viewof var_df18_conditional_row_binding_run = html`<input type="number" class="ojs-hidden-df18_conditional_row_binding" data-ojs-run="df18_conditional_row_binding" value="0">`Use subset() to extract rows where A > 5 and B < 40.
A B
6 6 30
7 7 35
viewof var_df19_multiple_conditions_1 = html`<input type="text" class="ojs-hidden-df19_multiple_conditions" data-ojs-proxy="df19_multiple_conditions::var_df19_multiple_conditions_1" value="">`
viewof var_df19_multiple_conditions_2 = html`<input type="text" class="ojs-hidden-df19_multiple_conditions" data-ojs-proxy="df19_multiple_conditions::var_df19_multiple_conditions_2" value="">`
viewof var_df19_multiple_conditions_3 = html`<input type="text" class="ojs-hidden-df19_multiple_conditions" data-ojs-proxy="df19_multiple_conditions::var_df19_multiple_conditions_3" value="">`
viewof var_df19_multiple_conditions_4 = html`<input type="text" class="ojs-hidden-df19_multiple_conditions" data-ojs-proxy="df19_multiple_conditions::var_df19_multiple_conditions_4" value="">`
viewof var_df19_multiple_conditions_5 = html`<input type="text" class="ojs-hidden-df19_multiple_conditions" data-ojs-proxy="df19_multiple_conditions::var_df19_multiple_conditions_5" value="">`
viewof var_df19_multiple_conditions_6 = html`<input type="text" class="ojs-hidden-df19_multiple_conditions" data-ojs-proxy="df19_multiple_conditions::var_df19_multiple_conditions_6" value="">`
viewof var_df19_multiple_conditions_run = html`<input type="number" class="ojs-hidden-df19_multiple_conditions" data-ojs-run="df19_multiple_conditions" value="0">`Modify df2 to have the same number of rows as df1, then combine them using cbind().
A B C
1 1 X TRUE
2 2 Y FALSE
3 3 Z TRUE
4 4 W NA
viewof var_df20_different_row_numbers_1 = html`<input type="text" class="ojs-hidden-df20_different_row_numbers" data-ojs-proxy="df20_different_row_numbers::var_df20_different_row_numbers_1" value="">`
viewof var_df20_different_row_numbers_2 = html`<input type="text" class="ojs-hidden-df20_different_row_numbers" data-ojs-proxy="df20_different_row_numbers::var_df20_different_row_numbers_2" value="">`
viewof var_df20_different_row_numbers_3 = html`<input type="text" class="ojs-hidden-df20_different_row_numbers" data-ojs-proxy="df20_different_row_numbers::var_df20_different_row_numbers_3" value="">`
viewof var_df20_different_row_numbers_4 = html`<input type="text" class="ojs-hidden-df20_different_row_numbers" data-ojs-proxy="df20_different_row_numbers::var_df20_different_row_numbers_4" value="">`
viewof var_df20_different_row_numbers_run = html`<input type="number" class="ojs-hidden-df20_different_row_numbers" data-ojs-run="df20_different_row_numbers" value="0">`Use str() to view the structure of my_data.
'data.frame': 5 obs. of 3 variables:
$ EmployeeID : int 1 2 3 4 5
$ EmployeeName: chr "Alice" "Bob" "Charlie" "David" ...
$ Age : num 25 30 35 40 45
viewof var_df21_view_structure_1 = html`<input type="text" class="ojs-hidden-df21_view_structure" data-ojs-proxy="df21_view_structure::var_df21_view_structure_1" value="">`
viewof var_df21_view_structure_2 = html`<input type="text" class="ojs-hidden-df21_view_structure" data-ojs-proxy="df21_view_structure::var_df21_view_structure_2" value="">`
viewof var_df21_view_structure_run = html`<input type="number" class="ojs-hidden-df21_view_structure" data-ojs-run="df21_view_structure" value="0">`Count the total number of missing values in my_data.
[1] 2
viewof var_df22_check_missing_1 = html`<input type="text" class="ojs-hidden-df22_check_missing" data-ojs-proxy="df22_check_missing::var_df22_check_missing_1" value="">`
viewof var_df22_check_missing_2 = html`<input type="text" class="ojs-hidden-df22_check_missing" data-ojs-proxy="df22_check_missing::var_df22_check_missing_2" value="">`
viewof var_df22_check_missing_3 = html`<input type="text" class="ojs-hidden-df22_check_missing" data-ojs-proxy="df22_check_missing::var_df22_check_missing_3" value="">`
viewof var_df22_check_missing_run = html`<input type="number" class="ojs-hidden-df22_check_missing" data-ojs-run="df22_check_missing" value="0">`Remove rows containing missing values from my_data.
A B
1 1 X
4 4 W
viewof var_df23_remove_missing_1 = html`<input type="text" class="ojs-hidden-df23_remove_missing" data-ojs-proxy="df23_remove_missing::var_df23_remove_missing_1" value="">`
viewof var_df23_remove_missing_2 = html`<input type="text" class="ojs-hidden-df23_remove_missing" data-ojs-proxy="df23_remove_missing::var_df23_remove_missing_2" value="">`
viewof var_df23_remove_missing_run = html`<input type="number" class="ojs-hidden-df23_remove_missing" data-ojs-run="df23_remove_missing" value="0">`Sort df by column A ascending and column B descending.
A B
2 1 20
1 1 10
3 2 15
4 2 5
Use sapply() to find the class of each column in my_data.
EmployeeID EmployeeName Age
"integer" "character" "numeric"
viewof var_df25_apply_columns_1 = html`<input type="text" class="ojs-hidden-df25_apply_columns" data-ojs-proxy="df25_apply_columns::var_df25_apply_columns_1" value="">`
viewof var_df25_apply_columns_2 = html`<input type="text" class="ojs-hidden-df25_apply_columns" data-ojs-proxy="df25_apply_columns::var_df25_apply_columns_2" value="">`
viewof var_df25_apply_columns_3 = html`<input type="text" class="ojs-hidden-df25_apply_columns" data-ojs-proxy="df25_apply_columns::var_df25_apply_columns_3" value="">`
viewof var_df25_apply_columns_run = html`<input type="number" class="ojs-hidden-df25_apply_columns" data-ojs-run="df25_apply_columns" value="0">`