2014-08-28 3 views
1

У меня есть огромная база данных, где я должен проверить несоответствия. Один из тестов состоит в том, чтобы суммировать некоторые значения пробоя и контролировать, если общее значение равно этому. Подведение итогов и сравнение не проблема. Я использовалсравнить каждую строку в двух векторах друг с другом

which(a+b+c+d != e), , который также дал значения, которые на самом деле правы. Surfing through stackoverflow показал, что R имеет некоторые проблемы с таким расчетом. Поэтому я попробовал which(all.equal(sum(a,b,c,d),e)!=T), , который дал бы мне правильный результат из-за его тестирования близкого равенства, но он не сравнивает каждую строку суммы (a, b, c, d) с каждой строкой e, но все векторы ,

Есть ли функция в R, которая позволяет мне проверять каждую строку так, как это делает all.equal()?

ответ

0

Похоже, вы можете использовать rowSums с подмножеством столбцов. Используя пример кадра данных df,

> (df <- data.frame(x = 1:4, y = 2:5, z = c(3, 8, 2, 9))) 
# x y z 
# 1 1 2 3 
# 2 2 3 8 
# 3 3 4 2 
# 4 4 5 9 
> rowSums(df[c("x", "y")]) == df[["z"]] 
# [1] TRUE FALSE FALSE TRUE 
> which(rowSums(df[c("x", "y")]) == df[["z"]]) 
# [1] 1 4 

Но, как это в настоящее время стоит, ваш вопрос остается неясным. Обновите его, чтобы показать, что именно вы хотите.

Смежные вопросы