我有一个大型数据集,我正在尝试确定如何为同一学生#的同一向量中的缺失值计算现有的分类值(研讨会#)。下面是一个例子,第一次观察学生“813”时缺少他的研讨会编号,根据第二次观察,该编号应为“Sem5”。
Stu# Sem#
812 Sem1
812 Sem1
813
813 Sem5
814 Sem9
814 Sem9
我已经在这几个小时了,并且注意到有任何成功。提前谢谢。
答案 0 :(得分:0)
假设您的数据位于数据框中Sem#
是字符(如果没有,转换为字符),并且Sem#的唯一可能值是空白或正确的研讨会名称,请尝试:
df.ord <- df[order(nchar(df$Sem), decreasing=T), ]
merge(df, df.ord[!duplicated(df.ord$Stu), ], by="Stu", all.x=T)[c(1, 3)]
# Stu Sem.y
# 1 812 Sem1
# 2 812 Sem1
# 3 813 Sem5
# 4 813 Sem5
# 5 814 Sem9
# 6 814 Sem9
注意我更改了列标题以避免使用#
。
基本上,我在这里做的是首先重新排序数据,以便空白Sem#
的值最后结束,然后使用duplicated
将数据框子集合到非具有非空Sem#
值的重复值。完成后,我们可以合并回原始数据以附加Sem#
。