Конвертировать фрейм данных в список - PullRequest
1 голос
/ 02 апреля 2019

Я хотел бы преобразовать информационный кадр, содержащий почтовые индексы и отношения между почтовыми индексами, в список.

Я рассмотрел способы преобразования данных в списки, а также функцию распространения.

Первый столбец (codes1) содержит все почтовые индексы зоны. Второй столбец (codes2) содержит почтовые индексы городов, связанных с первым.

df<-as.data.frame(cbind(rep(1:4, c(2,5,4,3)),c(2,4,4,3,6,8,7,1,2,8,7,1,2,3)))
colnames(df)<-c("codes1","codes2")
df

Я хотел бы получить такой список, содержащий для каждого почтового индекса соответствующие почтовые индексы:

l <- list(c(2,4), c(4,3,6,8,7),c(1,2,8,7),c(1,2,3))
l

1 Ответ

3 голосов
/ 02 апреля 2019

Вы можете просто разделить codes2 на codes1

split(x = df$codes2, f = df$codes1)
#$`1`
#[1] 2 4

#$`2`
#[1] 4 3 6 8 7

#$`3`
#[1] 1 2 8 7

#$`4`
#[1] 1 2 3

Вы также можете просмотреть уникальные значения codes1 и выбрать соответствующее значение из codes2

lapply(X = unique(df$codes1),
       FUN = function(x) subset(df$codes2, df$codes1 == x))
#[[1]]
#[1] 2 4

#[[2]]
#[1] 4 3 6 8 7

#[[3]]
#[1] 1 2 8 7

#[[4]]
#[1] 1 2 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...