-1

我想在 r 中以树格式存储数据。R中有没有可以使用的包?数据样本:

lat lon ,v1,v2,v3,parent,id
23.9917345,90.4195876,83,3,0,0,1

这里的父列代表当前行的父id

4

1 回答 1

3

您可以在不循环的情况下找到孩子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>

(剪断)

于 2013-03-27T19:51:36.267 回答