Как сравнить сумму нескольких столбцов с одним столбцом и вернуть ошибку, если есть разница? - PullRequest
0 голосов
/ 03 августа 2020

Я создаю несколько файлов предварительной загрузки, которые необходимо очистить, убедившись, что сумма двух столбцов равна столбцу общей суммы. Ввод данных производился вручную RA, поэтому данные подвержены ошибкам. Моя проблема состоит в том, чтобы убедиться, что данные чистые, и если есть ошибка, самый простой способ определить столбцы, которые не складываются, путем возврата идентификационного номера. Это мои данные

df1 <- data.frame(
  id = c(1,2,3,4,5,6,7),
  male = c(2,4,2,6,3,4,5),
  female = c(3,6,4,9,2,4,1),
  Total = c(5,10,7,15,6,8,7)
)

Предполагается, что код, который я ищу, предназначен для сравнения, если мужчина + женщина = Всего в каждой строке, и возвращает ТОЛЬКО ошибку при наличии разногласий. В моих данных выше я ожидал бы такой ошибки, как сумма мужского и женского пола в 3 строках с ID 3,5 и 7, не равная общему количеству.

Ответы [ 2 ]

1 голос
/ 03 августа 2020

Вы также можете сделать что-то более интересное, например, этот лайнер:

df1$id[apply(df1[c('male','female')], 1, sum) != df1$Total]

, который даст вам только идентификаторы (ответ Азиза тоже отлично работает)

0 голосов
/ 03 августа 2020

Вы можете использовать:

mismatch_rows = which(df1$male + df1$female != df1$Total)

Чтобы получить индексы строк, которые не совпадают. Если вам нужны фактические значения, вы можете просто использовать:

df1[mismatch_rows,]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...