2017-02-08 1 views
-1

j'ai un grand ensemble de données comme suit:Sélection des paires de valeurs impaires même dans R

head(humic) 
SUERC.No GU.Number d13.C Age.(BP) error Batch.Number AMS.USED Year Type 

Sampletype 
400 32691  535 -28 3382.981 34.74480   1  S3 2011 2   ha 
401 32701  536 -28 3375.263 34.86087   1  S3 2011 2   ha 
402 32711  537 -28 3308.103 34.83100   1  S3 2011 2   ha 
403 32721  538 -28 3368.721 31.58641   1  S3 2011 2   ha 
404 32731  539 -28 3368.604 34.72326   1  S3 2011 2   ha 
405 32741  540 -28 3314.713 32.83147   1  S3 2011 2   ha 

tail(humic) 
    SUERC.No GU.Number d13.C Age.(BP) error Batch.Number AMS.USED Year Type Sampletype 
5445 70880  3962 -28.4 3390.458 29.12815   34  S4 2016 2   ha 
5446 70890  3963 -28.5 3358.861 37.14896   34  S4 2016 2   ha 
5447 70900  3964 -28.5 3363.626 26.71573   34  S4 2016 2   ha 
5448 70910  3965 -28.5 3408.907 26.69665   34  S4 2016 2   ha 
5449 70920  3966 -28.5 3348.463 29.01492   34  S4 2016 2   ha 
5450 70930  3967 -28.4 3375.247 26.78261   34  S4 2016 2   ha 

Je cherche à créer une variable pour identifier les paires de paires et impaires en fonction de la GU.Number variable. Ces numéros identifient les doublons du même objet - ont les mêmes valeurs d13.C.

Par exemple, 535-536 537-538 3963-3964 3965-3966 sont des paires. Notez que la colonne de GU.Number n'est pas une séquence, certains nombres sont manquants.

+0

Le laboratoire qui a collecté les données identifie l'impair comme original et le nombre pair suivant comme doublon. – Fanni

Répondre

1
even.rows <- which(!(humic$GU.Number %% 2)) 

has.pair <- rep(0,nrow(humic)) 

for(i in even.rows){ 
     has.pair[i] <- max((humic$GU.Number[i] + c(1,-1)) %in% humic$GU.Number) 
} 

# add as column of data 
humic$has.pair <- has.pair 

La colonne has.pair sera 1 si le GU.Number est pair et impair, il existe un GU.Number une ou moins une donnée supérieure à la GU.Number. Sinon, il sera 0. En tant que ligne simple:

humic$has.pair <- sapply(1:nrow(humic), 
      function(x) with(humic,(!(GU.Number[x] %% 2))*max((GU.Number[x] + c(1,-1)) %in% GU.Number)))