计算 Pagerank 的百分比

问题描述

我必须在 Pagerank 上进行一个项目,并且需要计算它落在每个页面上的概率。文本文件也太大而无法放入 Excel 文件中,我在想出计算概率的方法时遇到了问题。什么是最有效的计算方法?下面列出了一个添加了概率的示例和一个没有概率的示例。例如,页面 0 的概率是 25%,因为有 4 个链接。该文本文件称为 pagerank.txt。我可以使用 Python、R、sql 和 Excel。

0  1  0.25
0  2  0.25
0  3  0.25
0  4  0.25

1  2  
1  3  
1  4  
1  5  
1  6 

解决方法

在 R 中,您可以在基础 R、dplyrdata.table 中执行此操作。

假设您已将 df 中的数据读入 R 并且两列分别为 V1V2,您可以这样做:

#Base R
transform(df,prob = 1/ave(V2,V1,FUN = length))

#  V1 V2 prob
#1  0  1 0.25
#2  0  2 0.25
#3  0  3 0.25
#4  0  4 0.25
#5  1  2 0.20
#6  1  3 0.20
#7  1  4 0.20
#8  1  5 0.20
#9  1  6 0.20

#dplyr
library(dplyr)
df %>% group_by(V1) %>% mutate(prob = 1/n())

#data.table
library(data.table)
setDT(df)[,prob := 1/.N,V1]

数据

df <- structure(list(V1 = c(0L,0L,1L,1L),V2 = c(1L,2L,3L,4L,5L,6L)),class = "data.frame",row.names = c(NA,-9L))