Сравнение значений двух таблиц относительно терпимости в R

Я хотел сравнить два стола. Если ценность , таблица 2 помещенный в 0.3 терпимости (+0.3 и-0.3) таблицы 2 называет его нормальным иначе, называет его неправильным.

Типовые данные:

Table 1.                        

0.17666667
-0.2413333
-0.179666
0.182437
0.012229
0.127333
-0.1180
0.8873
1.24100
1.5213

Table 2.

-1.6
-0.5
-0.4
-0.4
-0.2
2.5
0.6
2.2
2.3
1.3

Ожидаемые результаты для первого ряда:

if 0.17666667**-0.3**<-1.6<0.17666667**+0.3**

закончитесь НОРМАЛЬНЫХ Иначе Неправильных

5
nl ja de

3 ответы

Вы могли также сделать это с all.equal .

table.1 <- scan(text="
0.17666667
-0.2413333
-0.179666
0.182437
0.012229
0.127333
-0.1180
0.8873
1.24100
1.5213")

table.2 <- scan(text="
-1.6
-0.5
-0.4
-0.4
-0.2
2.5
0.6
2.2
2.3
1.3")

are.close <- function(x, y, tol) isTRUE(all.equal(x, y, tol))
close <- mapply(are.close, x=table.1, y=table.2, tol=0.3)
result <- ifelse(close, 'N', 'A')
# [1] "A" "N" "N" "A" "N" "A" "A" "A" "A" "N"
4
добавлено

Использование комбинация преобразовывает и ifelse как в:

DF <- data.frame(Table_1=unname(Table_1), Table_2=unname(Table_2))
DF <- transform(DF, 
                Result = ifelse(Table_1 - 0.3 < Table_2 & Table_2 < Table_1 + 0.3, 'Normal', 'Abnormal'))
      Table_1 Table_2   Result
1   0.1766667    -1.6 Abnormal
2  -0.2413333    -0.5   Normal
3  -0.1796660    -0.4   Normal
4   0.1824370    -0.4 Abnormal
5   0.0122290    -0.2   Normal
6   0.1273330     2.5 Abnormal
7  -0.1180000     0.6 Abnormal
8   0.8873000     2.2 Abnormal
9   1.2410000     2.3 Abnormal
10  1.5213000     1.3   Normal

наборы данных:

Table_1 <- read.table(text="0.17666667
-0.2413333
-0.179666
0.182437
0.012229
0.127333
-0.1180
0.8873
1.24100
1.5213", header=F)

Table_2 <- read.table(text="-1.6
-0.5
-0.4
-0.4
-0.2
2.5
0.6
2.2
2.3
1.3", header=F)
1
добавлено

Используя полномочие pacakge, мы можем сформулировать это как меру по расстоянию или подобию, Очень чистое и расширяемое решение любого расстояния.

library(proxy)
result <- rep('abnormal',length(Table 1.))     ## initialize mu result vector
result[dist(df[,1], df[,2], 
       method = function(x,y) abs(x -y),       ## I define my own distance
       pairwise = TRUE) < 0.3] <- 'normal'     ## by pair distance

 result
 [1] "abnormal" "normal"   "normal"   "abnormal" "normal"  
     "abnormal" "abnormal" "abnormal"   
     "abnormal" "normal" 
0
добавлено