From e98ba8ad6b42cc6aefe0f8834a9a591150692946 Mon Sep 17 00:00:00 2001 From: Kyle Belanger Date: Sun, 4 Aug 2024 08:12:41 -0400 Subject: [PATCH] chpater 4 update --- LearnJulia/src/Chapter4.jl | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/LearnJulia/src/Chapter4.jl b/LearnJulia/src/Chapter4.jl index 6a467c9..161a546 100644 --- a/LearnJulia/src/Chapter4.jl +++ b/LearnJulia/src/Chapter4.jl @@ -1,7 +1,34 @@ using DataFrames +using CSV + +# Julid for Data Sciences makes use of functions to keep variable scooping under control function grades_2020() name = ["Sally", "Bob", "Alice", "Hank"] grade_2020 = [1, 5, 8.5, 4] DataFrame(; name, grade_2020) -end \ No newline at end of file +end + +function write_grades() + path = joinpath("data", "grades.csv") + CSV.write(path, grades_2020()) +end + + +filter(:name => ==("Alice"), grades_2020()) + +function complex_filter(name, grade)::Bool + name = startswith(name, "A") || startswith(name, "B") + grade = 6 < grade + name && grade +end + +filter([:name, :grade_2020] => complex_filter, grades_2020()) + +function salaries() + names = ["John", "Hank", "Karen", "Zed"] + salary = [1_900, 2_800, 2_800, missing] + DataFrame(; names, salary) +end + +subset(salaries(), :salary => ByRow(>(2_000)); skipmissing = true) \ No newline at end of file