作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个数据框(大约 400 万行),其中每一行都有一个唯一的 ID、一个父 ID 及其在层次结构中的级别:
comment_id comment_parent comment_lvl
1 1049997196 1049997055 3
2 1052635064 2000116664444 0
3 1053256308 1053255205 2
4 1053367761 1053366805 1
5 1054579447 2000117646770 0
6 1054944680 1054821961 1
7 1051053522 1051053049 6
8 1052558482 2000116611974 0
9 1056095951 1056095543 1
10 1053611186 1053565222 2
我想计算每个顶级项目的 child 总数 (comment_lvl == 0
)。我的预期输出是这样的聚合:
comment_id comment_lvl total_replies
2 1052635064 0 123
5 1054579447 0 45
8 1052558482 0 2
我不确定如何有效地解决这个问题,因为数据集很大而且深度相当大(大约 150)。
编辑:
提供一个工作示例:
comment_id <- c('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', '1', '2', '3', '4', '5', '6', '7', '8')
parent_id <- c('0', 'A', 'B', 'B', 'A', 'E', 'F', 'G', '0', '1', '2', '2', '1', '5', '6', '7')
lvl <- c(0, 1, 2, 2, 1, 2, 3, 4, 0, 1, 2, 2, 1, 2, 3, 4)
df <- data.frame(comment_id, parent_id, lvl)
数据如下所示:
comment_id parent_id lvl
1 A 0 0
2 B A 1
3 C B 2
4 D B 2
5 E A 1
6 F E 2
7 G F 3
8 H G 4
9 1 0 0
10 2 1 1
11 3 2 2
12 4 2 2
13 5 1 1
14 6 5 2
15 7 6 3
16 8 7 4
预期结果:
comment_id total_replies
1 A 7
2 1 7
最佳答案
这是一个带有igraph
的选项
library(igraph)
g <- graph_from_data_frame(subset(df[2:1], lvl != 0))
dfout <- rev(
stack(
sapply(
with(df, unique(comment_id[lvl == 0])),
function(x) sum(clusters(g)$membership == clusters(g)$membership[x]) - 1
)
)
)
给出
ind values
1 A 7
2 1 7
关于通过唯一 ID 递归计算数据框中的子项数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63300474/
如何计算 json feed 中的项目数量? 缩写的 json 格式... { "rlm1":[...], "rlm2":[...], "rlm3":[...], "r
我是一名优秀的程序员,十分优秀!