У меня есть набор данных df
, структура которого похожа на приведенный ниже пример:
nr countrycode questionA questionB questionC WeightquestionA WeightquestionB WeightquestionC
1 NLD 2 1 4 0.6 0.2 0.2
2 NLD NA 4 NA 0.4 0.4 0.2
3 NLD 4 4 1 0.2 0.2 0.6
4 BLG 1 NA 1 0.1 0.5 0.4
5 BLG 5 3 5 0.2 0.2 0.6
Вопросы A, B и C относятся к аналогичной теме, и в результате я хотел бысоздайте средний балл по всем вопросам с учетом важности каждого вопроса (WeightquestionA WeightquestionB WeightquestionC
).
В настоящее время я вручную рассчитал средний балл.
(questionA*WeightquestionA) + (questionB*WeightquestionB) + (questionC*WeightquestionC)
Это не было бы непреодолимой проблемой, если бы не АН (для которых: нет, они не могут быть удалены).В результате я хотел бы автоматизировать процесс.
В настоящее время я думаю об использовании sum(!is.na())
для подсчета не-NA в каждом вопросе (A, B, C) для каждой строки (с 1 по 5)и поместив это значение в новый столбец.
С data.table у меня всегда возникают проблемы с правильным синтаксисом.Я считаю, что это должно быть что-то вроде:
df[, NonNA:=sum(!is.na(questionA + questionB + questionC))]
Но это суммирует все NA в столбце, а не для каждой строки.Как мне написать синтаксис для расчета для строки?
Я хотел бы ссылаться на столбцы отдельно по имени, потому что они не находятся рядом друг с другом в фактическом df.
Желаемый вывод:
nr countrycode qA qB qC WeightquestionA WeightquestionB WeightquestionC NonNA
1 NLD 2 1 4 0.6 0.2 0.2 3
2 NLD NA 4 NA 0.4 0.4 0.2 1
3 NLD 4 4 1 0.2 0.2 0.6 3
4 BLG 1 NA 1 0.1 0.5 0.4 2
5 BLG 5 3 5 0.2 0.2 0.6 3