2013-08-13 2 views
0

J'ai trois colonnes et dans la quatrième colonne, je veux un décalage de la troisième colonne. Comment faire en RComment retarder numéro de ligne dans R

Par exemple

uid  timestamp operation 
1   24-04-12 logged-in 
2   25-06-13 view content 
1   31-05-10 delete 

Mais je veux utiliser la fonction de décalage que nous en SAS et que vous voulez sortie comme ci-dessous

uid  timestamp operation  lag 
1   24-04-12  logged-in  
2   25-06-13  view content logged-in 
3   31-05-10  delete  view content 

Je fonction de décalage en utilisant package zoo , mais il ne se passe pas, comment faire cela dans R ?? N'importe quelle direction sera très appréciée.

Répondre

1

Lorsque vous utilisez des fonctions spécifiques au package zoo (par exemple ?lag.zoo), vous devez vous assurer que les données que vous opérez est un objet zoo:

operation <- c("logged-in","view current", "delete") 
lag(zoo(operation),-1,na.pad=TRUE) 
#   1   2   3 
#  <NA> logged-in view current 

lag(zoo(operation),1,na.pad=TRUE) 
#   1   2   3 
#view current  delete   <NA> 

Sinon, en utilisant la base R, head (et tail) peut vous y parvenir:

# match the 1 and -1 to how big you want your lag: 
c(rep(NA,1),head(operation,-1)) 
#[1] NA    "logged-in" "view current" 

c(tail(operation,-1),rep(NA,1)) 
#[1] "view current" "delete"  NA