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?
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
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())
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