【发布时间】:2017-04-14 20:42:51
【问题描述】:
我的数据通过Id、ParentId 系统链接,并且我设法添加了正确的整数levels,但是,我想编写一个函数,将我的 5 层层次结构自动嵌套为pathString为data.tree。
结构:
Id Name ParentId ParentName Level
701F0000006Iw8E 'Paid Media' NA NA 1
701F0000006IS1t 'Bing ABC' 701F0000006Iw8Y 'Bing' 3
701F0000006IS28 'Bing DEF' 701F0000006Iw8Y 'Bing' 3
701F0000006IS23 'Bing GHI' 701F0000006Iw8Y 'Bing' 3
701F0000006Imq9 'Bing JKL' 701F0000006Iw8Y 'Bing' 3
701F0000006IS1y 'Bing MNO' 701F0000006Iw8Y 'Bing' 3
701F0000006Iw8Y 'Bing' 701F0000006Iw8E 'Paid Media' 2
701F0000006IvcW 'Google' 701F0000006Iw8E 'Paid Media' 2
7012A000006rhY8 'Adwords ABC' 701F0000006IvcW 'Google' 3
701F0000006IS1j 'Adwords DEF' 701F0000006IvcW 'Google' 3
701F0000006IS1o 'Adwords GHI' 701F0000006IvcW 'Google' 3
701F0000006IS1Z 'Adwords JKL' 701F0000006IvcW 'Google' 3
701F0000006Ieci 'Adwords MNO' 701F0000006IvcW 'Google' 3
目前,我遇到了 pathString 在以下情况下只能被单层读取的问题:
dat$pathString <- paste(dat$ParentId,
dat$Id,
sep = "/")
例如。
"NA/701F0000000SOEq"
实际上,要正确填充整个树,我需要识别字符串中的所有后续父项:
"NA/701F0000006Iw8E/701F0000006Iw8Y/701F0000006IS1t" for "Bing ABC"
理想情况下,单个表达式对所有级别都等效,但我理解是否需要单独处理每个级别。
Full Id,ParentId 系统在这里: Dropbox Link
【问题讨论】:
-
我看不出这些数据与您链接到的问题有何不同。您是否至少尝试过该代码?究竟是什么不起作用?
-
在这种情况下,它是字符级别而不是数字整数。在上一个问题的情况下,他使用
ind+1在while的每次迭代期间逐步升级。我不确定如何通过字符值来做到这一点。即701F0000006Ieci + 1 = 701F0000006IvcW然后701F0000006IvcW + 1 = 701F0000006Iw8E -
有什么理由需要对 data.trees 执行路径方法?循环并添加孩子似乎更简单?
标签: r tree hierarchical-data