web-dev-qa-db-fra.com

Ajout d'une colonne avec des nombres consécutifs dans R

Je m'excuse si cette question est horriblement simple, mais je cherche un moyen d'ajouter simplement une colonne d'entiers consécutifs à une trame de données (si ma trame de données contient 200 observations, par exemple, en commençant par 1 pour la première observation, et se terminant par 200 sur le dernier).

Comment puis-je faire ceci?

8
Emily

Pour une trame de données (df), vous pouvez utiliser

df$observation <- 1:nrow(df) 

mais si vous avez une matrice, vous préférez utiliser

ma <- cbind(ma, "observation"=1:nrow(ma)) 

car l'utilisation de la première option transformera vos données en liste.

Source: http://r.789695.n4.nabble.com/adding-column-of-ordered-numbers-to-matrix-td2250454.html

14
Alex

Ou utilisez dplyr.

library(dplyr)
df %>% mutate(observation = 1:n())

Vous voudrez peut-être que ce soit la première colonne de df.

df %>% mutate(observation = 1:n()) %>% select(observation, everything())
3
Joe

La fonction tibble :: rowid_to_column est probablement ce dont vous avez besoin si vous utilisez l'écosystème tidyverse .

library(tidyverse)
dat <- tibble(x=c(10, 20, 30), 
              y=c('alpha', 'beta', 'gamma'))
dat %>% rowid_to_column(var='observation')

# A tibble: 3 x 3
  observation     x y    
        <int> <dbl> <chr>
1           1    10 alpha
2           2    20 beta 
3           3    30 gamma
0
Ilya V. Schurov