R:从同一向量中的其他分类值中计算缺失值

时间:2014-02-15 17:08:02

标签: r

我有一个大型数据集,我正在尝试确定如何为同一学生#的同一向量中的缺失值计算现有的分类值(研讨会#)。下面是一个例子,第一次观察学生“813”时缺少他的研讨会编号,根据第二次观察,该编号应为“Sem5”。

Stu#  Sem#
812   Sem1
812   Sem1
813
813   Sem5
814   Sem9
814   Sem9

我已经在这几个小时了,并且注意到有任何成功。提前谢谢。

1 个答案:

答案 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#