在R中将非矩形数据导入为矩形

dze*_*zer 2 r social-networking

我需要加载社交网络数据,其中每个用户都有一个未知且可能有大量的朋友,存储为以下格式的文本文件:

UserId: FriendId1, FriendId2, ...
1: 12, 33
2:
3: 4, 6, 10, 15, 16
Run Code Online (Sandbox Code Playgroud)

到两列data.frame:

  UserId FriendId
1      1       12
2      1       33
3      3        4
4      3        6
5      3       10
6      3       15
7      3       16
Run Code Online (Sandbox Code Playgroud)

你怎么会在R?

阅读,填充和重塑是低效的,因为它需要在内存中保留许多列NA.

相关问题在这里,这里.

A5C*_*2T1 5

如果你真的有冒号作为分隔符,那么只需使用read.tablewith header = FALSE将数据导入R,然后考虑使用cSplit我的"splitstackshape"包.

mydf <- read.table("test.txt", sep = ":", header = FALSE)
mydf
##   V1                V2
## 1  1            12, 33
## 2  2                  
## 3  3  4, 6, 10, 15, 16

library(splitstackshape)
cSplit(mydf, "V2", ",", "long")
##    V1 V2
## 1:  1 12
## 2:  1 33
## 3:  3  4
## 4:  3  6
## 5:  3 10
## 6:  3 15
## 7:  3 16
Run Code Online (Sandbox Code Playgroud)