从R中的不规则数据帧创建边列表(用于网络分析)

从R中的不规则数据帧创建边列表(用于网络分析),r,social-networking,data-mining,R,Social Networking,Data Mining,我有一个参差不齐的数据帧,每一行都是一个或多个实体在时间上的引用,如下所示: (time1) entitya entityf entityz (time2) entityg entityh (time3) entityo entityp entityk entityL (time4) entityM 我想从第二个向量(节点列表)中找到的实体子集创建一个用于网络分析的边列表。我的问题是我不知道: 1) 。如何仅子集节点列表中的实体。我在考虑 datanew<- subset(dataold

我有一个参差不齐的数据帧,每一行都是一个或多个实体在时间上的引用,如下所示:

(time1) entitya entityf entityz
(time2) entityg entityh
(time3) entityo entityp entityk entityL
(time4) entityM
我想从第二个向量(节点列表)中找到的实体子集创建一个用于网络分析的边列表。我的问题是我不知道:

1) 。如何仅子集节点列表中的实体。我在考虑

datanew<- subset(dataold, dataold %in% nodelist)
不知道怎么做。非常感谢您的帮助

试试这个:

# read your data 

dat <- strsplit(readLines(textConnection("(time1) entitya entityf entityz
(time2) entityg entityh
(time3) entityo entityp entityk entityL
(time4) entityM")), " ")

# remove (time)

dat <- lapply(dat, `[`, -1)

# filter

nodelist <- c("entitya", "entityf", "entityz", "entityg", "entityh",
              "entityo", "entityp", "entityk")

dat <- lapply(dat, intersect, nodelist)

# create an edge matrix

t(do.call(cbind, lapply(dat[sapply(dat, length) >= 2], combn, 2)))
#读取您的数据
dat试试这个:

# read your data 

dat <- strsplit(readLines(textConnection("(time1) entitya entityf entityz
(time2) entityg entityh
(time3) entityo entityp entityk entityL
(time4) entityM")), " ")

# remove (time)

dat <- lapply(dat, `[`, -1)

# filter

nodelist <- c("entitya", "entityf", "entityz", "entityg", "entityh",
              "entityo", "entityp", "entityk")

dat <- lapply(dat, intersect, nodelist)

# create an edge matrix

t(do.call(cbind, lapply(dat[sapply(dat, length) >= 2], combn, 2)))
#读取您的数据

dat“不规则数据帧”以什么形式出现?它是R中的一个对象(如果是,是什么类,您可以通过
dput
?)向我们提供它),还是现在只是一个文本文件?它来自我导入的csv文件中的一列,然后通过strsplt拆分并应用。这是一个列表,我可以把它做成一个向量,“不规则的数据帧”是以什么形式出现的?它是R中的一个对象(如果是,是什么类,您可以通过
dput
?)向我们提供它),还是现在只是一个文本文件?它来自我导入的csv文件中的一列,然后通过strsplt拆分并应用。这是一个列表,我可以把它做成一个向量。非常感谢!这真的很有帮助,但我应该说明:我需要的组合只有那些在原始矩阵中找到的。当前的答案似乎给出了数据中唯一元素的所有组合。有进一步的提示吗?你所说的“原始矩阵”是什么意思?它是否与你在问题中所说的“节点列表”有关?你问题的那一部分不清楚。请注意,在我的代码中,我创建了一个名为
nodelist
的对象,它是原始数据中所有实体的子集。您可以自由制作
nodelist
任何您想进一步细分数据的内容。非常感谢!这真的很有帮助,但我应该说明:我需要的组合只有那些在原始矩阵中找到的。当前的答案似乎给出了数据中唯一元素的所有组合。有进一步的提示吗?你所说的“原始矩阵”是什么意思?它是否与你在问题中所说的“节点列表”有关?你问题的那一部分不清楚。请注意,在我的代码中,我创建了一个名为
nodelist
的对象,它是原始数据中所有实体的子集。您可以随意创建
nodelist
任何您想进一步子集数据的内容。