比方说,我们有四名大学生,我们希望通过在一些学术课上查看他们的成绩来研究他们的学习成绩。 例如
AM GRADE1 DATE1 GRADE2 DATE2 LESSON CATEGORY CREDIT
3000010 5 20.02.2001 300012 YP 2
3000010 6 06.02.2001 300013 YP 2
3000010 7 09.02.2001 300014 YP 3
3000010 6 22.06.2001 300015 YP 2
3000010 9 21.02.2001 300044 EY 3
...
3050201 5 06.09.2006 300718 YP 3
3050201 300012 YP 3
3050201 300015 YP 3
3050201 2 06.10.2006 300049 YP 3
...
3070350 5 27.02.2009 300017 YP 3
3070350 6 23.02.2009 300613 YP 3
3070350 7 01.09.2009 300618 YP 3
3070350 9 11.02.2009 300619 YP 3
...
3900215 6 27.01.1992 300615 YP 3
3900215 5 13.10.1992 300616 YP 2
3900215 5 20.10.1992 300617 YP 3
3900215 7 19.06.1992 300620 YP 3
3900215 8 18.06.1992 300621 YP 2
etc
每个学生都有一个注册号码(AM),每节课(第一课)他们有两次机会通过课程。在DATE1(因此他们采用GRADE1)或DATE2(因此他们采用GRADE2)。
他们通过课程所需的最低成绩是5.
不要重视CATEGORY和CREDIT
因此,根据上表,AM = 3000010的学生,在LESSON = 300012的课程中,他在DATE1 = 20/2 / 2001日期通过了等级GRADE1 = 5。
AM = 3050201的学生于DATE2 = 6/10 / 2006参加了课程LESSON = 300049,他因成绩GRADE2 = 2而失败。
大多数课程代码(LESSON)对于许多学生来说很常见
成绩之前的空单元格(在GRADE1或DATE1中)表明学生有机会来上课并检查课程,但他没有。
例如,AM = 3070350的学生第二次(DATE2)用GRADE2 = 7传递LESSON = 300618,尽管他有机会再来一次(DATE1中的空单位,所以在GRADE1上)。
我的问题是,在R中构建一个算法,它可以在学生通过每一课之前计算空单元格(DATE或GRADE),或者未通过一个(例如AM = 3050201的学生来自DATE2 = 6/10/2006课程LESSON = 300049并且他的成绩GRADE2 = 2失败了,尽管他可能再来一次 - > DATE1 / GRADE1中的空单元格。 例如,对于学生AM = 3050201,如下所示
AM GRADE1 DATE1 GRADE2 DATE2 LESSON CATEGORY CREDIT
3050201 ... ... 300012 YP 3
3050201 ... ... 300012 YP 3
3050201 ... ... 300012 YP 3
3050201 ... ... 300012 YP 3
3050201 ... 6 12.02.10 300012 YP 3
R中的例程给出了结果empty_cells= 9
或者例如
AM GRADE1 DATE1 GRADE2 DATE2 LESSON CATEGORY CREDIT
3050300 ... ... 325012 YP 3
3050300 ... 2 10.02.06 325012 YP 3
3050300 0 12.01.07 ... 325012 YP 3
3050300 ... ... 325012 YP 3
3050300 ... 6 12.02.10 325012 YP 3
R中的例程给出了结果empty_cells= 7
AM GRADE1 DATE1 GRADE2 DATE2 LESSON CATEGORY CREDIT
3050756 ... 2 12.02.10 319011 YP 3
R中的例程给出了结果empty_cells= 1
例程必须适用于每个学生。
AM GRADE1 DATE1 GRADE2 DATE2 LESSON CATEGORY CREDIT
1 3000010 5 20.02.2001 NA 300012 YP 2
2 3000010 6 06.02.2001 NA 300013 YP 2
3 3000010 7 09.02.2001 NA 300014 YP 3
4 3000010 6 22.06.2001 NA 300015 YP 2
5 3000010 9 21.02.2001 NA 300044 EY 3
6 3000010 9 19.06.2001 NA 300100 EY 3
7 3000010 9 13.02.2001 NA 300604 YP 3
8 3000010 8 29.06.2001 NA 300605 YP 4
9 3000010 7 03.07.2001 NA 300606 EY 2
10 3000010 9 21.06.2001 NA 300623 YP 2
11 3000010 6 26.06.2001 NA 300643 YP 2
12 3000010 8 06.02.2001 NA 300677 EY 3
13 3000010 8 19.06.2001 NA 300680 EY 3
14 3000010 9 12.02.2001 NA 300794 YP 2
15 3000010 7 04.02.2002 NA 300017 YP 3
16 3000010 NA 9 30.09.2002 300090 EY 3
17 3000010 6 05.02.2002 NA 300613 YP 3
18 3000010 NA 9 04.10.2002 300614 YP 3
19 3000010 NA 9 27.09.2002 300618 YP 3
20 3000010 10 11.02.2002 NA 300619 YP 3
21 3000010 NA 7 08.10.2002 300622 YP 3
22 3000010 NA 8 11.10.2002 300632 YP 3
23 3000010 10 12.02.2002 NA 300674 YP 3
24 3000010 8 08.02.2002 NA 300678 EY 3
25 3000010 NA 8 01.10.2002 300684 YP 3
26 3000010 10 14.02.2002 NA 300755 EY 3
27 3000010 10 08.07.2003 NA 300049 YP 3
28 3000010 10 20.02.2003 NA 300052 EY 3
29 3000010 8 05.03.2003 NA 300070 EY 3
30 3000010 9 02.07.2003 NA 300076 EY 3
31 3000010 8 13.03.2003 NA 300635 EY 3
32 3000010 9 01.07.2003 NA 300668 EY 3
33 3000010 8 02.07.2003 NA 300679 EY 3
34 3000010 9 04.03.2003 NA 300690 EY 3
35 3000010 10 08.03.2003 NA 300692 EY 3
36 3000010 9 07.03.2003 NA 300750 YP 3
37 3000010 10 02.07.2003 NA 300756 EY 3
38 3000010 10 01.07.2003 NA 300788 EY 3
39 3000010 NA NA 300051 EY 3
40 3000010 NA 10 29.09.2004 300088 EY 3
41 3000010 7 31.03.2004 NA 300111 EY 3
42 3000010 8 31.03.2004 NA 300127 EY 3
43 3000010 8 02.07.2004 NA 300620 EY 3
44 3000010 NA 10 23.09.2004 300659 EY 3
45 3000010 NA NA 300708 EY 3
46 3000010 8 29.06.2004 NA 300718 YP 3
47 3000010 NA NA 300731 EY 3
48 3000010 0 15.03.2004 10 22.09.2004 300749 EY 3
49 3000010 NA NA 300754 EY 3
50 3000010 NA NA 300786 EY 3
51 3000010 NA NA 300791 SE 3
52 3000010 10 08.02.2005 NA 900951 JGL 0
53 3050201 5 23.01.2006 NA 300014 YP 3
54 3050201 NA NA 300123 EY 3
55 3050201 8 01.02.2006 NA 300604 YP 3
56 3050201 5 06.02.2006 NA 300605 YP 4
57 3050201 5 31.01.2006 NA 300677 YP 3
58 3050201 5 06.09.2006 NA 300718 YP 3
59 3050201 NA NA 300012 YP 3
60 3050201 NA NA 300015 YP 3
61 3050201 NA 2 06.10.2006 300049 YP 3
62 3050201 0 11.09.2006 NA 300611 YP 4
63 3050201 3 09.09.2006 NA 300643 YP 2
64 3050201 NA NA 300794 YP 2
65 3050201 7 23.07.2007 NA 300013 YP 2
66 3050201 9 20.07.2007 NA 300017 YP 3
67 3050201 6 11.07.2007 NA 300613 YP 3
68 3050201 5 29.06.2007 NA 300614 YP 3
69 3050201 8 04.07.2007 NA 300618 YP 3
70 3050201 9 16.07.2007 NA 300619 YP 3
71 3050201 9 03.07.2007 NA 300622 YP 3
72 3050201 6 25.06.2007 NA 300632 YP 3
73 3050201 5 02.07.2007 NA 300684 YP 3
74 3050201 5 16.07.2007 NA 300750 YP 3
75 3050201 7 17.07.2007 NA 300774 EY 3
76 3050201 5 04.07.2007 NA 300779 EY 3
77 3050201 NA NA 300012 YP 3
78 3050201 NA NA 300015 YP 3
79 3050201 NA NA 300049 YP 3
80 3050201 NA NA 300643 YP 2
81 3050201 NA NA 300794 YP 2
82 3050201 7 12.02.2008 NA 600060 YP 3
83 3050201 7 23.06.2008 NA 300015 YP 3
84 3050201 5 02.07.2008 NA 300049 YP 3
85 3050201 8 18.06.2008 NA 300054 EY 3
86 3050201 6 26.02.2008 NA 300090 EY 3
87 3050201 8 11.06.2008 NA 300110 SE 3
88 3050201 9 24.06.2008 NA 300119 EY 3
89 3050201 10 20.06.2008 NA 300142 EY 3
90 3050201 NA 5 22.09.2008 300144 EY 3
91 3050201 7 25.06.2008 NA 300643 YP 2
92 3050201 6 01.07.2008 NA 300656 EY 3
93 3050201 7 04.07.2008 NA 300680 EY 3
94 3050201 8 19.02.2008 NA 300706 EY 3
95 3050201 8 04.02.2008 NA 300749 EY 3
96 3050201 NA 6 03.09.2008 300794 YP 2
97 3050201 NA NA 300012 YP 3
98 3050201 3 21.02.2008 NA 300130 EY 3
99 3050201 3 23.06.2008 NA 300131 EY 3
100 3050201 NA NA 73 EE 3
101 3050201 10 19.06.2009 NA 300072 EY 3
102 3050201 NA 9 18.09.2009 300073 EY 3
103 3050201 NA NA 300131 EY 3
104 3050201 NA 5 23.09.2009 300176 EY 3
105 3050201 3 02.07.2009 8 03.09.2009 300178 EY 3
106 3050201 NA 0 31.08.2009 300185 EY 3
107 3050201 NA 5 15.09.2009 300615 EY 3
108 3050201 NA 6 17.09.2009 300636 EY 3
109 3050201 1 26.06.2009 6 25.09.2009 300657 EY 3
110 3050201 NA 9 04.09.2009 300674 EY 3
111 3050201 3 23.06.2009 7 22.09.2009 300778 EY 3
112 3050201 NA NA 300012 YP 3
113 3050201 NA NA 300130 EY 3
114 3050201 NA NA 300134 EY 3
115 3050201 3 17.06.2009 3 16.09.2009 300141 EY 3
116 3050201 NA 3 07.09.2009 300611 YP 4
117 3050201 NA 10 08.10.2010 900951 JGL 0
118 3050201 8 12.02.2010 NA 300012 YP 3
119 3050201 NA NA 300032 EY 5
120 3050201 NA NA 300130 EY 3
121 3050201 NA NA 300134 EY 3
122 3050201 4 18.02.2010 NA 300141 EY 3
123 3050201 NA NA 300150 EY 3
124 3050201 NA NA 300187 EY 3
125 3050201 7 18.06.2010 NA 300620 EY 3
126 3050201 NA 2 24.09.2010 300611 YP 4
127 3050201 0 24.06.2011 7 23.09.2011 300611 YP 4
128 3070350 5 26.02.2008 NA 300012 YP 3
129 3070350 5 23.06.2008 NA 300015 YP 3
130 3070350 5 20.06.2008 NA 300044 EY 3
131 3070350 8 25.06.2008 NA 300643 YP 2
132 3070350 7 07.07.2008 NA 300718 YP 3
133 3070350 NA NA 300014 YP 3
134 3070350 NA NA 300049 YP 3
135 3070350 3 08.02.2008 NA 300604 YP 3
136 3070350 NA NA 300605 YP 4
137 3070350 NA NA 300611 YP 4
138 3070350 NA NA 300677 YP 3
139 3070350 NA NA 300794 YP 2
140 3070350 5 27.02.2009 NA 300017 YP 3
141 3070350 6 23.02.2009 NA 300613 YP 3
142 3070350 NA 7 01.09.2009 300618 YP 3
143 3070350 9 11.02.2009 NA 300619 YP 3
144 3070350 7 18.02.2009 NA 300636 EY 3
145 3070350 6 24.06.2009 NA 300684 YP 3
146 3070350 7 09.02.2009 NA 300750 YP 3
147 3070350 2 16.02.2009 NA 300013 YP 2
148 3070350 NA NA 300049 YP 3
149 3070350 NA NA 300604 YP 3
150 3070350 NA NA 300611 YP 4
151 3070350 NA NA 300614 YP 3
152 3070350 NA NA 300620 EY 3
153 3070350 NA NA 300622 YP 3
154 3070350 NA NA 300632 YP 3
155 3070350 NA NA 300168 EY 3
156 3070350 NA 6 08.09.2010 300158 EY 3
157 3070350 2 19.02.2010 NA 300176 EY 3
158 3070350 3 25.06.2010 5 22.09.2010 300181 EY 3
159 3070350 6 09.02.2010 NA 300188 EY 3
160 3070350 8 12.02.2010 NA 300674 EY 3
161 3070350 8 05.02.2010 NA 300708 EY 3
162 3070350 7 08.02.2010 NA 300723 EY 3
163 3070350 NA NA 300013 YP 2
164 3070350 NA NA 300014 YP 3
165 3070350 NA NA 300049 YP 3
166 3070350 NA 4 20.09.2010 300072 EY 3
167 3070350 NA 3 08.09.2010 300162 EY 3
168 3070350 NA NA 300178 EY 3
169 3070350 NA NA 300611 YP 4
170 3070350 NA NA 300620 EY 3
171 3070350 1 10.06.2010 2 17.09.2010 300754 EY 3
172 3070350 NA NA 300794 YP 2
173 3070350 7 21.02.2011 NA 300013 YP 2
174 3070350 5 31.01.2011 NA 300014 YP 3
175 3070350 8 22.06.2011 NA 300049 YP 3
176 3070350 6 11.02.2011 NA 300145 EY 3
177 3070350 NA NA 300147 EY 3
178 3070350 10 25.02.2011 NA 300157 EY 3
179 3070350 6 20.06.2011 NA 300162 EY 3
180 3070350 NA NA 300165 EY 3
181 3070350 NA NA 300169 EY 3
182 3070350 NA NA 300170 EY 3
183 3070350 7 16.06.2011 NA 300197 EY 3
184 3070350 NA NA 300156 EY 3
185 3070350 NA NA 300177 EY 3
186 3070350 NA NA 300196 EY 3
187 3070350 NA NA 300198 EY 3
188 3070350 NA NA 300604 YP 3
189 3070350 3 18.02.2011 NA 300605 YP 4
190 3070350 NA NA 300611 YP 4
191 3070350 3 20.06.2011 NA 300614 YP 3
192 3070350 NA NA 300622 YP 3
193 3070350 NA NA 300630 EY 3
194 3070350 NA NA 300794 YP 2
195 3070350 NA NA 300011 EY 3
196 3070350 NA NA 300041 EY 3
197 3070350 NA NA 300057 EY 3
198 3070350 NA NA 300071 EY 3
199 3070350 NA NA 300072 EY 3
200 3070350 NA NA 300100 EY 3
201 3070350 NA NA 300119 EY 3
202 3070350 NA NA 300156 EY 3
203 3070350 NA NA 300168 EY 3
204 3070350 8 09.02.2012 NA 300177 EY 3
205 3070350 NA NA 300178 EY 3
206 3070350 6 08.02.2012 NA 300196 EY 3
207 3070350 7 08.02.2012 NA 300198 EY 3
208 3070350 NA NA 300604 YP 3
209 3070350 5 01.02.2012 NA 300605 YP 4
210 3070350 NA NA 300611 YP 4
211 3070350 4 11.06.2012 NA 300614 YP 3
212 3070350 NA NA 300620 EY 3
213 3070350 NA NA 300622 YP 3
214 3070350 NA NA 300630 EY 3
215 3070350 NA NA 300632 YP 3
216 3070350 5 15.02.2012 NA 300677 YP 3
217 3070350 NA NA 300754 EY 3
218 3070350 5 06.02.2012 NA 300794 YP 2
219 3900215 6 04.03.1991 NA 300602 YP 3
220 3900215 NA NA 300603 YP 3
221 3900215 NA 6 07.10.1991 300606 YP 3
222 3900215 7 05.07.1991 NA 300609 YP 3
223 3900215 NA 7 17.09.1991 300675 EY 3
224 3900215 NA 4 17.09.1991 300676 EY 3
225 3900215 NA 6 07.10.1991 300677 EY 3
226 3900215 7 25.06.1991 NA 300680 EY 3
227 3900215 NA 2 16.09.1991 300691 YP 3
228 3900215 NA 3 03.10.1991 300704 YP 3
229 3900215 10 01.06.1991 NA 900951 JGL 0
230 3900215 NA NA 300622 YP 3
231 3900215 NA NA 300626 YP 3
232 3900215 5 17.02.1992 NA 300613 YP 3
233 3900215 6 27.01.1992 NA 300615 YP 3
234 3900215 NA 5 13.10.1992 300616 YP 2
235 3900215 NA 5 20.10.1992 300617 YP 3
236 3900215 7 19.06.1992 NA 300620 YP 3
237 3900215 8 18.06.1992 NA 300621 YP 2
238 3900215 7 02.06.1992 NA 300638 YP 3
239 3900215 7 09.06.1992 NA 300640 EY 3
240 3900215 7 08.06.1992 NA 300684 YP 3
241 3900215 7 27.01.1992 NA 300750 YP 3
242 3900215 8 07.07.1992 NA 300753 EY 3
243 3900215 NA 8 15.10.1992 300761 EY 2
244 3900215 NA NA 300763 EY 3
245 3900215 9 01.02.1993 NA 300601 YP 3
246 3900215 6 02.02.1993 NA 300604 YP 3
247 3900215 7 19.02.1993 NA 300618 YP 3
248 3900215 6 03.02.1993 NA 300623 YP 2
249 3900215 4 02.02.1993 NA 300624 YP 2
250 3900215 8 16.06.1993 NA 300627 YP 2
251 3900215 5 18.06.1993 NA 300628 YP 2
252 3900215 7 22.06.1993 NA 300647 YP 3
253 3900215 6 24.06.1993 NA 300749 EY 2
254 3900215 8 17.06.1993 NA 300776 EY 2
255 3900215 8 11.06.1993 NA 300782 EY 3
256 3900215 7 06.06.1994 NA 300713 YP 2
257 3900215 2 14.06.1994 NA 300619 YP 3
258 3900215 NA NA 300610 YP 2
259 3900215 NA NA 300631 YP 3
260 3900215 NA NA 300633 YP 3
261 3900215 4 27.01.1995 NA 300724 YP 2
262 3900215 NA NA 300759 EY 3
263 3900215 NA NA 300605 YP 4
264 3900215 NA NA 300611 YP 4
265 3900215 NA NA 300614 YP 3
266 3900215 NA NA 300619 YP 3
267 3900215 NA NA 300632 YP 3
268 3900215 NA NA 300634 YP 3
269 3900215 NA NA 300718 YP 3
270 3900215 NA NA 300755 EY 3
271 3900215 NA NA 300793 EY 3
272 3900215 NA NA 300013 YP 2
273 3900215 NA NA 300611 YP 4
274 3900215 NA NA 300614 YP 3
275 3900215 NA NA 300632 YP 3
276 3900215 NA NA 300611 YP 4
277 3900215 NA NA 300619 YP 3
278 3900215 2 10.06.1997 NA 300622 YP 3
279 3900215 5 13.02.1997 NA 300632 YP 3
280 3900215 NA NA 300718 YP 3
281 3900215 NA NA 300754 EY 2
282 3900215 NA NA 300013 YP 2
283 3900215 NA NA 300017 YP 3
284 3900215 NA NA 300605 YP 4
285 3900215 NA NA 300614 YP 3
286 3900215 NA NA 300643 YP 2
287 3900215 NA NA 300737 EY 3
288 3900215 1 25.06.1999 NA 300643 YP 2
289 3900215 2 22.06.1999 NA 300737 EY 3
290 3900215 2 21.06.1999 NA 300755 EY 3
291 3900215 NA NA 300012 YP 3
292 3900215 NA NA 300013 YP 2
293 3900215 NA NA 300017 YP 3
294 3900215 NA NA 300605 YP 4
295 3900215 NA NA 300614 YP 3
296 3900215 NA NA 300626 EY 2
297 3900215 NA NA 300634 EY 3
298 3900215 NA NA 300755 EY 3
299 3900215 NA NA 300793 EY 3
300 3900215 NA NA 300794 YP 2