将数据框转换为列表

时间:2019-04-02 15:30:05

标签: r list dataframe

我想将包含邮政编码和邮政编码之间的关系的数据框转换为列表。

我研究了将数据帧转换为列表以及散布函数的方法。

第一列(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 个答案:

答案 0 :(得分:3)

您可以将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