我有以下数据框。
Student Class Jan_18_score Feb_18_score Jan_18_Weight Feb_18_Weight
(1) Adam 1 NA 2 150 153
(2) Char 1 5 7 30 60
(3) Fred 1 -7 8 NA 80
(4) Greg 1 2 NA 80 40
(5) Ed 2 1 2 60 80
要使观察有效,每个月必须同时具有得分和权重。否则,分数和权重都将更改为0。
数据应该看起来像这样
Student Class Jan_18_score Feb_18_score Jan_18_Weight Feb_18_Weight
(1) Adam 1 o 2 0 153
(2) Char 1 5 7 30 60
(3) Fred 1 0 8 0 80
(4) Greg 1 2 NA 80 0
(5) Ed 2 1 2 60 80
我尝试了以下方法(如果有帮助,谢谢您)。但是某些值并未更改为零。
# Separate score and weight columns
score_cols <- grep("score_", names(temp))
weight_cols <- grep("weight_", names(temp))
valid <- is.na(temp[score_cols]) | is.na(temp[weight_cols])
然后我使用新的DF进行计算
temp2 <- aggregate(.~class, cbind(temp["class"], temp[score_cols] * temp[weight_cols]), sum)
感谢您的帮助。