【发布时间】:2017-10-27 13:14:01
【问题描述】:
我有关于大学俱乐部每周社交时间可能和确实发生的每一次互动的数据
我的数据样本如下
structure(list(from = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L,
2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("A",
"B", "C"), class = "factor"), to = structure(c(2L, 3L, 2L, 3L,
2L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 2L, 1L, 2L, 1L, 2L), .Label = c("A",
"B", "C"), class = "factor"), timestalked = c(0L, 1L, 0L, 4L,
1L, 2L, 0L, 1L, 0L, 2L, 1L, 0L, 1L, 2L, 1L, 0L, 0L, 0L), week = structure(c(1L,
1L, 3L, 3L, 2L, 2L, 1L, 1L, 3L, 3L, 2L, 2L, 1L, 1L, 3L, 3L, 2L,
2L), .Label = c("1/1/2010", "1/15/2010", "1/8/2010"), class = "factor")), .Names = c("from",
"to", "timestalked", "week"), class = "data.frame", row.names = c(NA,
-18L))
我正在尝试计算网络统计数据,例如每个星期、过去两周和年初至今的 A、B、C 的中心性。我让它工作的唯一方法是在我想要分析的时间单位中手动分解文件,但我希望必须有一种不那么费力的方法。
当timestalked 为 0 时,应将其视为无边
输出将产生一个.csv,其内容如下:
actor cent_week1 cent_week2 cent_week3 cent_last2weeks cent_yeartodate
A
B
C
cent_week1 是 2010 年 1 月 1 日的中心性; cent_last2weeks 正在考虑 2010 年 1 月 8 日和 2010 年 1 月 15 日; cent_yeartodate 是一次考虑的所有数据。这正应用于包含数百万个观测值的更大数据集。
【问题讨论】:
-
发布您迄今为止尝试过但不起作用的内容,并复制并粘贴
dput(my_data)的输出,而不是您现在格式化的方式。 -
@user 我花了几天时间在网上搜索并查看教程,但没有成功。我求助于使用 C++ 手动破坏 csv 介绍数百个子文件。然后我运行了所需的分析。所以这一切都完成了,但要关闭,我认为这是一个需要解决的重要问题。如果社区中没有人知道该怎么做,我理解。
-
我不认为这是这个问题太难的事实。我确定有人知道如何解决它。正是您格式化数据的方式使人们难以使用(阅读此stackoverflow.com/a/5963610/5150629)。如果您想获得有用的答案,至少发布人们可以通过复制和粘贴
dput(my_data)的输出来处理的数据,并提供您期望的最终输出的样子。 -
@user 有道理,已更新
-
这是你想要的那种东西:获取每个时间段的图表
b = by(d, d$week, FUN=graph_from_data_frame),然后在它们上面运行函数sapply(b, function(x) eigen_centrality(x, weights = E(x)$timestalked)$vector)(不确定这是否明智)