2017-07-05 13 views
1

私は2つのテストを行うための値「サイズ」を持つものと、テストするための間隔N1とN2を持っています。そうであれば、新しい列 "test"にTRUEを出力します。xとyの間のテスト値

+1

試して、それが例えばオーバーラップを持っている: 'ID1 1126 1472 ID1 1386 1413' – Wen

+0

また' 1455 ID2 TRUE'は '1455 ID2 FALSE'でなければなりません。 – mt1022

答えて

-1

Df1からのサイズがDf2からのN2の場合はTRUE/FALSEを基準にしますか?もしそうなら、%from data.tableの%を使用することができます。

df1 <- read.table(text = "size ID 
        399  ID1 
        887  ID2 
        350  ID1 
        1400 ID2 
        1455 ID2 
        1700 ID2 
        1654 ID1 
        928  ID1 
        1228 ID1", header = T) 

df2 <- read.table(text = "ID N1  N2 
ID1 298  500 
        ID1 560  706 
        ID1 809  925 
        ID1 959  1195 
        ID1 1126 1472 
        ID1 1386 1413 
        ID2 800 950 
        ID2 1074 1203 
        ID2 1462 1486 
        ID2 1542 1658", header = T) 

library(data.table)

df1$Test <- ifelse(df1$size %between% c(df2$N1, df2$N2), TRUE, FALSE) 

私は本当にTRUE/FALSEをオンに基づくべきであるかを理解いけないので、この答えは、あなたがが期待戻りません。ここで

1

data.tableの非エクイを使用したソリューションである参加:あなたの間隔を考える

library(data.table) 

setDT(Df1) 
setDT(Df2) 

Df1[, test := FALSE] 

Df1[Df2, test := TRUE, on = .(ID, size >= N1, size <= N2)] 
# > Df1 
# size ID test 
# 1: 399 ID1 TRUE 
# 2: 887 ID2 TRUE 
# 3: 350 ID1 TRUE 
# 4: 1400 ID2 FALSE 
# 5: 1455 ID2 FALSE 
# 6: 1700 ID2 FALSE 
# 7: 1654 ID1 FALSE 
# 8: 928 ID1 FALSE 
# 9: 1228 ID1 TRUE 
関連する問題