Как в R мы можем разделить таблицу на несколько фреймов данных, состоящих из первого столбца и каждого из остальных? - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть фрейм данных в столбцах R из x, где первый столбец (C1) содержит названия видов и далее столбцы их численность на образцы. Я хотел бы разбить тот кадр данных, где каждый новый разделенный кадр данных включает в себя C1 + Cx. Поэтому, если бы было 20 столбцов, было бы 19 кадров данных с C1 + C2, C1 + C3, C1 + C4 и т. Д.

Мне удалось разделить различные столбцы, используя lapply и split, но я не могу найти способ прикрепить к каждому из этих разделенных фреймов столбец C1. Есть ли какие-либо предложения? Спасибо!

1 Ответ

0 голосов
/ 05 ноября 2018

Вот способ использования split.default и lapply

# input data
iris2 <- iris[, c(5, 1:4)]

Мы разбиваем данные по столбцам, исключая первый столбец, это возвращает список.

iris2_split <- split.default(iris2[-1], names(iris2)[-1])

Затем мы используем lapply и cbind, чтобы прикрепить первый столбец iris2 к каждой записи в iris2_split.

out <- lapply(iris2_split, cbind, iris2[1])

Результат (усеченный)

lapply(out, head, 3)
#$Petal.Length
#  Petal.Length Species
#1          1.4  setosa
#2          1.4  setosa
#3          1.3  setosa

#$Petal.Width
#  Petal.Width Species
#1         0.2  setosa
#2         0.2  setosa
#3         0.2  setosa

#$Sepal.Length
#  Sepal.Length Species
#1          5.1  setosa
#2          4.9  setosa
#3          4.7  setosa

#$Sepal.Width
#  Sepal.Width Species
#1         3.5  setosa
#2         3.0  setosa
#3         3.2  setosa
...