WEBVTT captioned by daniel molina, checked by sachac NOTE Introduction 00:00:01.360 --> 00:00:03.079 Welcome everybody. My name is Daniel Molina 00:00:03.080 --> 00:00:05.060 and I'm going to give this talk 00:00:05.061 --> 00:00:08.063 "Who needs Excel? Managing your students' qualifications 00:00:08.064 --> 00:00:08.959 with Org-table". 00:00:08.960 --> 00:00:10.559 I'm a professor. I work every day. 00:00:10.560 --> 00:00:12.519 I have to qualify my students. 00:00:12.520 --> 00:00:15.079 While most would consider normal in this situation, 00:00:15.080 --> 00:00:17.719 would be to use Excel or LibreOffice 00:00:17.720 --> 00:00:18.599 for doing that. 00:00:18.600 --> 00:00:21.179 However, I think that approaching it from Emacs 00:00:21.180 --> 00:00:24.479 has several interesting advantages. 00:00:24.480 --> 00:00:27.659 First, I would like to write the qualification 00:00:27.660 --> 00:00:33.599 next to the justification, next to the student error, 00:00:33.600 --> 00:00:36.639 and in the Excel format, it's not comfortable to do that. 00:00:36.640 --> 00:00:38.839 Actually, I always prefer to write in Emacs 00:00:38.840 --> 00:00:42.719 for many reasons, as many of you. 00:00:42.720 --> 00:00:46.679 Also, I love text format because I can compare versions 00:00:46.680 --> 00:00:50.279 using a control version system like Git and easily change. 00:00:50.280 --> 00:00:52.759 This is very useful for the revision period 00:00:52.760 --> 00:00:55.479 in which a student visits me 00:00:55.480 --> 00:01:01.039 and maybe I can change the qualification for any reason. 00:01:01.040 --> 00:01:03.439 I also can export the results directly to PDF 00:01:03.440 --> 00:01:08.679 to publish them in my online campus for the student. 00:01:08.680 --> 00:01:11.359 I have many tools for doing that. 00:01:11.360 --> 00:01:13.199 I already knew about Org-table formula. 00:01:13.200 --> 00:01:15.199 I thought it was very cool and useful 00:01:15.200 --> 00:01:16.159 to use Emacs for that, 00:01:16.160 --> 00:01:19.239 and I have actually found a package `orgtbl-aggregate` 00:01:19.240 --> 00:01:22.859 that seemed adequate for doing that. 00:01:22.860 --> 00:01:26.319 Unfortunately, I didn't see a lot of information 00:01:26.320 --> 00:01:29.159 about how to do that in a painless way. 00:01:29.160 --> 00:01:31.759 So, I have to learn, training and testing, 00:01:31.760 --> 00:01:34.999 and then prepare these tools to solve that problem 00:01:35.000 --> 00:01:36.639 and to help other teachers. 00:01:36.640 --> 00:01:39.959 Anyway, it could be used not only for teaching 00:01:39.960 --> 00:01:41.959 but for more contexts. NOTE Demonstration 00:01:41.960 --> 00:01:44.799 Well, let's start. 00:01:44.800 --> 00:01:46.459 First, I have two sections, 00:01:46.460 --> 00:01:53.399 the comments and the section of the table, or results. 00:01:53.400 --> 00:01:56.479 I have... The comment for each student 00:01:56.480 --> 00:01:57.559 is in a different headline. 00:01:57.560 --> 00:02:05.439 It's very useful to check with a note. 00:02:05.440 --> 00:02:10.159 I can go directly using your helm or ivy 00:02:10.160 --> 00:02:12.999 or consult to go directly to the section. 00:02:13.000 --> 00:02:14.559 So it's very nice. 00:02:14.560 --> 00:02:22.879 Then I put the comment, right, completely wrong, 00:02:22.880 --> 00:02:30.599 it answers other questions. 00:02:30.600 --> 00:02:35.839 I put other comments here that I could send to the student, 00:02:35.840 --> 00:02:37.480 you can imagine, and then 00:02:37.481 --> 00:02:40.159 I can put the qualification, the score for each student. 00:02:40.160 --> 00:02:43.159 The thing with that is, initially, 00:02:43.160 --> 00:02:46.219 when I started doing that, I put, I don't know, 00:02:46.220 --> 00:02:50.719 the exception and a qualification with that. 00:02:50.720 --> 00:02:55.679 Okay, that's one point, this a three, 00:02:55.680 --> 00:03:06.679 and use a column total with something like that. 00:03:06.680 --> 00:03:08.319 Okay, that's nice. NOTE Range 00:03:08.320 --> 00:03:11.639 But then, when I started getting more and more parts, 00:03:11.640 --> 00:03:17.081 I considered it more useful to use, 00:03:17.082 --> 00:03:20.699 to put for each part, 00:03:20.700 --> 00:03:20.700 which is the maximum qualification, 00:03:20.300 --> 00:03:22.919 on the range of the qualification. 00:03:22.920 --> 00:03:25.559 In that case, I'm going to put, 00:03:25.560 --> 00:03:28.679 the first one is two scores, the second three points, 00:03:28.680 --> 00:03:34.999 the third one is one point, and the last one, four points. 00:03:35.000 --> 00:03:37.799 And instead of putting that in that way, 00:03:37.800 --> 00:03:41.027 I like to put one is completely right, 00:03:41.028 --> 00:03:47.319 zero is completely wrong, or maybe some intermediate values for that. 00:03:47.320 --> 00:03:50.999 Of course, I have to change the qualification, 00:03:51.000 --> 00:03:54.439 the formula, so it's very simple. 00:03:54.440 --> 00:03:56.479 I only have to put, 00:03:56.480 --> 00:04:08.299 multiply the values of the second line with that. 00:04:08.300 --> 00:04:11.899 So, it's very useful for doing that. NOTE More qualifications 00:04:11.900 --> 00:04:16.639 Okay, that's the first part, so I can put the comment, 00:04:16.640 --> 00:04:19.959 I can go to the section, I can create... 00:04:19.960 --> 00:04:24.919 I'm going to put more qualifications. 00:04:24.920 --> 00:04:27.639 Now I'm going to put the table. 00:04:27.640 --> 00:04:30.459 First I'm going to change, rename the column name, 00:04:30.460 --> 00:04:39.039 because it's easier when there is only one word. 00:04:39.040 --> 00:04:47.159 And it's very simple to use. You only have to put 00:04:47.160 --> 00:04:51.439 the name, aggregate, the name of the table, 00:04:51.440 --> 00:04:54.659 in that case group A, 00:04:54.660 --> 00:04:57.199 and in another string, the columns. 00:04:57.200 --> 00:05:03.799 For instance, name, surname, total. 00:05:03.800 --> 00:05:07.439 And you can see that you can get a lesson list 00:05:07.440 --> 00:05:09.119 with all the students, 00:05:09.120 --> 00:05:16.759 but only with the final score to publish them. 00:05:16.760 --> 00:05:17.679 Okay? 00:05:17.680 --> 00:05:20.679 Even you can update the name of the column, 00:05:20.680 --> 00:05:21.800 not in the original table, 00:05:21.801 --> 00:05:29.559 but in the lesson table using that format. 00:05:29.560 --> 00:05:32.099 Okay? 00:05:32.100 --> 00:05:34.239 That is a good option. NOTE Subsets 00:05:34.240 --> 00:05:38.499 Now we are going to see how can we use that 00:05:38.500 --> 00:05:44.359 to make a subset of the students. 00:05:44.360 --> 00:05:47.839 For instance, imagine, this is me, 00:05:47.840 --> 00:05:54.799 I'm going to put the bad, I change, now I can update, 00:05:54.800 --> 00:06:02.759 you can see this, but also I'm going to put a list 00:06:02.760 --> 00:06:10.960 with the students that have failed the exam. 00:06:10.961 --> 00:06:21.259 It's simple, because this package has the option `:cond`. 00:06:21.260 --> 00:06:26.199 I'm going to put first to see it better, 00:06:26.200 --> 00:06:28.599 I'm going to put a condition 00:06:28.600 --> 00:06:37.519 in which we aggregate less than a half, 5, 00:06:37.520 --> 00:06:44.179 and I have to use a `string-to-number` total. 00:06:44.180 --> 00:06:47.259 In that way, I can see that this is the student 00:06:47.260 --> 00:06:48.839 that has failed the exam, 00:06:48.840 --> 00:06:54.079 I could use that to make another table, 00:06:54.080 --> 00:07:08.299 this is the people that passed the exam. NOTE Sorting 00:07:08.300 --> 00:07:10.980 Another interesting feature is that 00:07:10.981 --> 00:07:15.620 I can... the lesson table can be sorted automatically. 00:07:15.621 --> 00:07:20.100 It's simple. You only have to put this symbol (`^`), 00:07:20.101 --> 00:07:23.360 and you can put next to the column you want 00:07:23.361 --> 00:07:26.999 to use for the sort, and then you can put 00:07:27.000 --> 00:07:30.679 `a` if you want to sort alphabetically, 00:07:30.680 --> 00:07:33.879 in uppercase if you want to reverse the sort, 00:07:33.880 --> 00:07:38.919 and `n` if you want to sort numerically. 00:07:38.920 --> 00:07:40.759 For instance, I can put that 00:07:40.760 --> 00:07:43.959 from the lesser score to the best score, 00:07:43.960 --> 00:07:46.639 or here from the best score to the lesser score. 00:07:46.640 --> 00:07:48.960 And this sort is completely independent 00:07:48.961 --> 00:07:51.640 to the sort of the original table. NOTE New table 00:07:51.641 --> 00:07:54.520 Now I'm going to do another different thing, 00:07:54.521 --> 00:08:02.799 we are going to put a new table, 00:08:02.800 --> 00:08:07.559 I'm going to put a new table 00:08:07.560 --> 00:08:09.639 in which I'm going to put 00:08:09.640 --> 00:08:14.319 the number of passed students, failed students 00:08:14.320 --> 00:08:16.519 and the ratio of students. It's simple. 00:08:16.520 --> 00:08:26.559 I'm going to put the pass, in that case, as column, 00:08:26.560 --> 00:08:32.919 I can put the count, of course, I can put the count, 00:08:32.920 --> 00:08:35.799 the number of students 00:08:35.800 --> 00:08:42.079 that have passed, so I'm going to put in that way, ok? 00:08:42.080 --> 00:08:58.479 I'm going to put pass, count, failed, ratio. 00:08:58.480 --> 00:08:59.739 You can see, ok? 00:08:59.740 --> 00:09:01.859 But this only the count, 00:09:01.860 --> 00:09:04.519 you are going to put the number wrong. 00:09:04.520 --> 00:09:08.359 So, it's true, but you can actually put formula here. 00:09:08.360 --> 00:09:10.079 For instance, you can say, 00:09:10.080 --> 00:09:12.399 I know that I have 3 students, 00:09:12.400 --> 00:09:18.799 so the number of failed is 3 minus the passed student. 00:09:18.800 --> 00:09:24.959 And also, I can put the formula, is the people, 00:09:24.960 --> 00:09:27.719 the students that passed, 00:09:27.720 --> 00:09:36.079 divide into the number total of students, ok? 00:09:36.080 --> 00:09:41.379 Let's go to put that in that way, 00:09:41.380 --> 00:09:44.399 is the people that passed, it is better in that way, 00:09:44.400 --> 00:09:48.359 and also I can put directly the number of, 00:09:48.360 --> 00:09:50.919 the ratio of students. 00:09:50.920 --> 00:09:55.739 So, in that way, I can have a table 00:09:55.740 --> 00:09:57.519 with the students that passed, 00:09:57.520 --> 00:09:58.559 the students that failed 00:09:58.560 --> 00:10:01.279 and the ratio of people that passed. NOTE Statistics 00:10:01.280 --> 00:10:04.819 Sometimes this type of qualification will be useful for me, 00:10:04.820 --> 00:10:08.079 to see how much has been the sound, 00:10:08.080 --> 00:10:12.239 how much good has been the exercise. 00:10:12.240 --> 00:10:14.879 Now, I'm going to put a new table. 00:10:14.880 --> 00:10:22.421 This new table is going to go some statistics, 00:10:22.422 --> 00:10:32.379 `statistics_score`, `begin: aggregate :table "final"`. 00:10:32.380 --> 00:10:43.919 In this case, I'm going to use not the original table, 00:10:43.920 --> 00:10:54.019 but a final, I'm going to put `final_group`, 00:10:54.020 --> 00:11:01.399 `final_p1`, `final_p2`, ok? 00:11:01.400 --> 00:11:06.119 And as `:cols`, I'm going to put directly 00:11:06.120 --> 00:11:13.579 how many results I have, I put number, 00:11:13.580 --> 00:11:19.199 I'm going to put also the mean. 00:11:19.200 --> 00:11:21.400 You can see that mean total is not working 00:11:21.401 --> 00:11:24.519 because I'm using this table and I renamed, 00:11:24.520 --> 00:11:26.079 the column name was renamed, 00:11:26.080 --> 00:11:36.679 so it's `mean(Score)`, mean, 00:11:36.680 --> 00:12:05.919 and then the score. You can obtain `stdiv` -- `sdev`, 00:12:05.920 --> 00:12:08.959 sorry, there was an error about that, 00:12:08.960 --> 00:12:12.639 and two decimal, 00:12:12.640 --> 00:12:17.799 and that is another interesting score. NOTE Combining 00:12:17.800 --> 00:12:23.239 Now, I'm going to finish showing how we can use. 00:12:23.240 --> 00:12:25.839 To finish it, we are going to see 00:12:25.840 --> 00:12:28.299 how we can combine several tables 00:12:28.300 --> 00:12:32.479 or even an aggregated table in a new table. 00:12:32.480 --> 00:12:36.259 For instance, you can have a table for the practice 1, 00:12:36.260 --> 00:12:38.199 you can have a table for the practice 2, 00:12:38.200 --> 00:12:40.359 so I'm going to do that. 00:12:40.360 --> 00:12:48.180 I'm going to move this table. You can copy or remove, 00:12:48.181 --> 00:12:49.759 doesn't matter the order, 00:12:49.760 --> 00:12:59.519 I'm going to put this to identify the result of practice 2, 00:12:59.520 --> 00:13:03.321 Org create an ID (`org-id-get-create`), 00:13:03.322 --> 00:13:07.479 then we have a previous result, 00:13:07.480 --> 00:13:10.199 and I have a final table. 00:13:10.200 --> 00:13:11.839 The final table could be complicated, 00:13:11.840 --> 00:13:17.439 but it's not so much complicated, it's only that, 00:13:17.440 --> 00:13:21.959 I'm going to put something that the formula wants. 00:13:21.960 --> 00:13:26.588 The formula is to make 00:13:26.589 --> 00:13:34.400 an `org-lookup-first` of the second name, 00:13:34.401 --> 00:13:41.540 considering that it's unique, 00:13:41.541 --> 00:13:53.439 `remote` of the surname, 00:13:53.440 --> 00:14:05.559 and let's say another `remote` of the `$3` element, 00:14:05.560 --> 00:14:15.119 ok, that's an error because I don't put yet the ID, 00:14:15.120 --> 00:14:19.759 so I'm going to copy -- mark and copy -- 00:14:19.760 --> 00:14:28.519 and paste the unique ID generated, 00:14:28.520 --> 00:14:38.519 I'm going to put that... I think there is missing one. 00:14:38.520 --> 00:14:43.399 Finally. Okay, that's right. 00:14:43.400 --> 00:14:49.579 So imagine that I change something here, for instance, 00:14:49.580 --> 00:14:56.700 I put... I change that, 00:14:56.701 --> 00:15:02.199 actually, this is changed also, and this is changed. 00:15:02.200 --> 00:15:08.599 This is a good way to divide the classification 00:15:08.600 --> 00:15:10.200 in several files, one for the practice 1, 00:15:10.201 --> 00:15:15.039 one for the practice 2, and one final practice 00:15:15.040 --> 00:15:27.639 that I can finally export in a final table. 00:15:27.640 --> 00:15:31.119 Of course you can make it a lot more pretty, 00:15:31.120 --> 00:15:33.359 but this is all I want to show you. 00:15:33.360 --> 00:15:34.799 I hope with this talk 00:15:34.800 --> 00:15:37.679 you have learned a lot more about Org formula, 00:15:37.680 --> 00:15:39.688 [orgtbl-aggregate] package, 00:15:39.689 --> 00:15:42.279 and how you can use all this techniques 00:15:42.280 --> 00:15:45.599 to improve your qualification of a student, 00:15:45.600 --> 00:15:50.480 or for whatever you want.