小编Olg*_* Mu的帖子

如何使用igraph或tnet在R中创建二分网络

我有一个双模网络的边缘列表,类似于:

person  Event
Amy     football_game
Sam     picnic
Bob     art_show
Run Code Online (Sandbox Code Playgroud)

我想在R中对此进行分析,但看起来我尝试的一切都失败了.将其转换为单模式网络会遇到内存限制,我无法弄清楚如何在igraph或tnet中将其分析为二分.

在igraph中,bipartite.projection给我所有FALSE,在使用的igraph对象上

net <- graph.edgelist(myobject)
Run Code Online (Sandbox Code Playgroud)

在tnet上,我无法将igraph网转换为tnet网,当我尝试使用原始数据框时,它会因图中的重复而拒绝.

因此,以下任何一个的答案将非常感激:

  1. 我该如何使用该bipartite.mapping功能?
  2. 如何将igraph对象输入tnet?
  3. 如果所有其他方法都失败了,我该如何输入带有重复边的数据框到tnet?

很抱歉,如果这些是基本问题,但文档很少.

编辑

例:

edgelist <- read.table(text="Person    Event
                             Amy       football
                             Bob       picnic
                             Sam       artshow", 
                       header=TRUE)
edgelist <- as.matrix(edgelist)

## Igraph Issues
igraph <- graph.edgelist(edgelist)
typevector <- bipartite.projection(igraph) 
# gets all FALSE

edgelist2 <- get.edgelist(igraph)
typevector <- bipartite.projection(edgelist2) 
# same thing

## tnet issues
tnet <- as.tnet(edgelist) 
# gives error: "There are duplicate events in the edgelist" …
Run Code Online (Sandbox Code Playgroud)

r igraph sna

6
推荐指数
1
解决办法
1万
查看次数

将numpy字符串数组转换为float:Bizarre?

所以,这应该是一个非常简单的事情,但无论出于何种原因,我没有做任何事情来将字符串数组转换为浮点数组.

我有一个两列数组,如下所示:

Name    Value
Bob     4.56
Sam     5.22
Amy     1.22
Run Code Online (Sandbox Code Playgroud)

我试试这个:

for row in myarray[1:,]:
     row[1]=float(row[1])
Run Code Online (Sandbox Code Playgroud)

还有这个:

for row in myarray[1:,]:
    row[1]=row[1].astype(1)
Run Code Online (Sandbox Code Playgroud)

还有这个:

myarray[1:,1] = map(float, myarray[1:,1])
Run Code Online (Sandbox Code Playgroud)

他们似乎都做了些什么,但是当我仔细检查时:

type(myarray[9,1])
Run Code Online (Sandbox Code Playgroud)

我明白了

<type> 'numpy.string_'>
Run Code Online (Sandbox Code Playgroud)

python numpy type-conversion

5
推荐指数
1
解决办法
1万
查看次数

Pandas Datetime:计算两列中日期之间的周数

假设我有一个包含两个日期的列的数据框,我想创建一个新列,其值是这些日期之间的月数.

>df

Index   Date1         Date2
1       2012/03/07    2013/03/16
2       2012/12/05    2012/12/25
3       2010/06/30    2013/05/19
4       2002/11/02    2011.06.08


df["Date1"]= pd.to_datetime(df["Date1"])
df["Date2"]= pd.to_datetime(df["Date2"])
Run Code Online (Sandbox Code Playgroud)

Date1将始终位于date2之前.我目前的这种方法需要大约10个步骤,我很确定有一个更简单的方法来做到这一点.思考?

python datetime pandas

3
推荐指数
1
解决办法
5513
查看次数

映射值并替换

我有两个像这样的数据框:

节点:

new_id  Name  old_id
1        foo    560
2        fie    561
3        fee    562
4        fim    563
Run Code Online (Sandbox Code Playgroud)

相关:

StartID   EndID
560       561
561       563
561       562
563       560
Run Code Online (Sandbox Code Playgroud)

其中第二个文件中的 ID 是第一个文件中的旧 ID。我想根据第一个文件中的匹配行更新第二个文件中的 ID。

期望的结局:

StartID  EndID
1         2
2         4
2         3
4         1
Run Code Online (Sandbox Code Playgroud)

我正在查看replace(),但不清楚在不知道索引的情况下如何使用它。

r

2
推荐指数
1
解决办法
5927
查看次数

标签 统计

python ×2

r ×2

datetime ×1

igraph ×1

numpy ×1

pandas ×1

sna ×1

type-conversion ×1