我想将包含邮政编码和邮政编码之间的关系的数据框转换为列表。
我研究了将数据帧转换为列表以及散布函数的方法。
第一列(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
答案 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