1
votes

comment sous-ensemble toutes les 6 lignes dans R?

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.


0 commentaires

3 Réponses :


0
votes

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)


0 commentaires

2
votes

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


1 commentaires

Solution simple. Merci



0
votes

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)


0 commentaires