filter_students <- function(df) { # Check if "score" and "grade" columns exist if (!("score" %in% names(df)) || !("grade" %in% names(df))) { return(data.frame()) } # Filter rows where "score" is greater than or equal to 80 and "grade" is not "Incomplete" result <- df[df$score >= 80 & df$grade != "Incomplete", ] # If "date" column exists, filter rows where the date is after January 1st, 2020 if ("date" %in% names(df)) { result <- result[as.Date(result$date) > as.Date("2020-01-01"), ] } # If "comments" column exists, exclude rows where the comment contains the word "absent" if ("comments" %in% names(df)) { result <- result[!grepl("absent", result$comments, ignore.case = TRUE), ] } return(result) } # Example usage: mydata <- data.frame( student = c("John", "Mary", "Bob", "Alice", "Jane"), score = c(90, 75, 85, 92, 78), grade = c("A", "C", "B", "A", "B+"), date = c("2021-05-10", "2019-06-23", "2021-07-15", "2020-11-12", "2020-01-02"), comments = c("Good job", "Incomplete homework", "Absent on test day", "Excellent", "Late submission"), stringsAsFactors = FALSE # Ensure that strings are not converted to factors ) filtered_data <- filter_students(mydata) print(filtered_data)
Write, Run & Share R Language code online using OneCompiler's R Language online compiler for free. It's one of the robust, feature-rich online compilers for R language, running on the latest version 3.4. Getting started with the OneCompiler's R Language compiler is simple and pretty fast. The editor shows sample boilerplate code when you choose language as R
and start coding.
R is very popular for data analytics which was created by Ross Ihaka and Robert Gentleman in 1993. Many big companies like Google, Facebook, Airbnb etc uses this language for data analytics. R is good for software developers, statisticians and data miners.
Data type | Description | Usage |
---|---|---|
Numeric | To represent decimal values | x=1.84 |
Integer | To represent integer values, L tells to store the value as integer | x=10L |
Complex | To represent complex values | x = 10+2i |
Logical | To represent boolean values, true or false | x = TRUE |
Character | To represent string values | x <- "One compiler" |
raw | Holds raw bytes |
Variables can be assigned using any of the leftward, rightward or equal to operator. You can print the variables using either print or cat functions.
var-name = value
var-name <- value
value -> var-name
If, If-else, Nested-Ifs are used when you want to perform a certain set of operations based on conditional expressions.
if(conditional-expression){
#code
}
if(conditional-expression){
#code if condition is true
} else {
#code if condition is false
}
if(condition-expression1) {
#code if above condition is true
} elseif(condition-expression2){
#code if above condition is true
}
elseif(condition-expression3) {
#code if above condition is true
}
...
else {
#code if all the conditions are false
}
Switch is used to execute one set of statement from multiple conditions.
switch(expression, case-1, case-2, case-3....)
For loop is used to iterate a set of statements based on a condition.
for (value in vector) {
# code
}
While is also used to iterate a set of statements based on a condition. Usually while is preferred when number of iterations are not known in advance.
while(condition) {
# code
}
Repeat is used tyo iterate a set of statements with out any condition. You can write a user-defined condition to exit from the loop using IF
.
repeat {
#code
if(condition-expression) {
break
}
}
Function is a sub-routine which contains set of statements. Usually functions are written when multiple calls are required to same set of statements which increases re-usuability and modularity.
func-name <- function(parameter_1, parameter_2, ...) {
#code for function body
}
function_name (parameters)
Vector is a basic data strucre where sequence of data values share same data type.
For example, the below statement assigns 1 to 10 values to x.
You can also use se() function to create vectors.
x <- 1:10
#using seq() function
x <- seq(1, 10, by=2)
the above statement prints the output as [1] 1 3 5 7 9
.