Использование для l oop в R - PullRequest
       2

Использование для l oop в R

0 голосов
/ 25 февраля 2020

У меня есть фрейм данных X

  id  sales  age
   1   100    32
   2   40     27
   3   694    34
   4   500    41

Я хотел бы создать для l oop

для (я в 1: 4)

{
group[i]<- X[X$id==i, ]

}

Я выполнил эту ерунду для l oop, чтобы описать идею, однако ее нужно отредактировать. Я хочу получить group1 в качестве фрейма данных о продажах и возрасте, в котором id = 1, и так далее для других групп. На самом деле я ищу решение с для l oop, потому что оно понадобится мне позже.

Спасибо!

1 Ответ

1 голос
/ 25 февраля 2020

Хотя я думаю, что вы должны использовать split(X, X$id), как подсказывает @ zx8754, вот подход, использующий для l oop:

X <- read.table(text = "  id  sales  age
   1   100    32
   2   40     27
   3   694    34
   4   500    41", header = TRUE)

ids <- unique(X[["id"]])
grps <- vector(mode = "list", length = length(ids))
for (id in ids) {
  grps[[id]] = X[X$id == id, ]
}

grps
[[1]]
  id sales age
1  1   100  32

[[2]]
  id sales age
2  2    40  27

[[3]]
  id sales age
3  3   694  34

[[4]]
  id sales age
4  4   500  41

Или, если вам нужно количество раз в l oop, вы можете использовать:

for (i in seq_along(ids)) {
  grps[[i]] = X[X$id == ids[i], ]
}
grps

Этот следующий шаг не рекомендуется, но он взял бы список и создал бы кучу объектов data.frame в среде:

names(grps) <- paste0("grps", seq_len(length(grps)))
list2env(grps, .GlobalEnv)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...