Je dois sous-définir les données de 6 lignes à chaque fois. Comment faire ça en R?
seqData <- seq(1,nrow(data),6) output: It is giving 1 and 7th row but I want 1 to 6 rows first, next onwards 7 to nrow(data).
Je veux faire un sous-ensemble de 6 lignes à chaque fois. Le premier sous-ensemble des lignes aura 1: 6, le sous-ensemble suivant des lignes aura 7: nrow (données). J'ai essayé d'utiliser la fonction seq .
data: col1 : 1,2,3,4,5,6,7,8,9,10 col2 : a1,a2,a3,a4,a5,a6,a7,a8,a9,a10
Comment obtenir une sortie comme ça.
3 Réponses :
La fonction ci-dessous crée un vecteur numérique avec des entiers augmentant de 1 unité toutes les n lignes. Et utilise ce vecteur pour diviser les données selon les besoins.
data <- data.frame(col1 = 1:10, col2 = paste0("a", 1:10))
split_nrows <- function(x, n){
f <- c(1, rep(0, n - 1))
f <- rep(f, length.out = NROW(x))
f <- cumsum(f)
split(x, f)
}
split_nrows(data, 6)
Est-ce que ça va marcher:
set.seed(1)
dat <- data.frame(c1 = sample(1:5,12,T),
c2 = sample(1:5,12,T))
dat
c1 c2
1 1 2
2 4 2
3 1 1
4 2 5
5 5 5
6 3 1
7 2 1
8 3 5
9 3 5
10 1 2
11 5 2
12 5 1
split(dat, rep(1:ceiling(nrow(dat)/6), each = 6))
$`1`
c1 c2
1 1 2
2 4 2
3 1 1
4 2 5
5 5 5
6 3 1
$`2`
c1 c2
7 2 1
8 3 5
9 3 5
10 1 2
11 5 2
12 5 1
Solution simple. Merci
Voici un exemple simple avec mtcars qui donne une liste de 6 sous-ensembles de dfs.
nrows <- nrow(mtcars) breaks <- seq(1, nrows, 6) listdfs <- lapply(breaks, function(x) mtcars[x:(x+5), ]) # increment by 5 not 6 listdfs[[6]] <- listdfs[[6]][1:2, ] #last df: remove 4 NA rows (36 - 32)