我想在 r 中以树格式存储数据。R中有没有可以使用的包?数据样本:
lat lon ,v1,v2,v3,parent,id
23.9917345,90.4195876,83,3,0,0,1
这里的父列代表当前行的父id
我想在 r 中以树格式存储数据。R中有没有可以使用的包?数据样本:
lat lon ,v1,v2,v3,parent,id
23.9917345,90.4195876,83,3,0,0,1
这里的父列代表当前行的父id
您可以在不循环的情况下找到孩子aggregate(id, by=list(parent=parent), paste, collapse=" ")
:
例子:
> n <- 30; d <- data.frame(parent=sample(n,n,TRUE), id=1:n, value=runif(n))
> children <- with(d, aggregate(id, by=list(parent=parent), paste, collapse=" "))
> children
parent x
1 2 24
2 3 12 20 28
3 4 5
4 7 8 17 18
5 8 29
(剪断)
现在您可以将其合并到原始数据集中:
> names(children) <- c("id", "children")
> merge(d, children, all.x=TRUE)
id parent value children
1 1 13 0.319805784 <NA>
2 2 24 0.847229065 24
3 3 21 0.946230816 12 20 28
4 4 12 0.915684833 5
5 5 4 0.754628841 <NA>
(剪断)