0

我正在处理金融行业成员的员工历史,并希望制作一个边缘列表以在 Sankey Flow 中将其可视化。到目前为止,我的数据以逗号分隔的实体字符串形式存在,如下所示:

A, B, D
C, A, E, B
F, B

等等

特别感兴趣的是其中一家公司(例如,称为 B 公司)。我需要把上面的这些数据变成类似这样的东西:

A, B
B, D
C, B
A, B
E, B
F, B

等等

再次强调,B 公司很重要,所以我需要一种方法来具体识别该因素,并处理不同长度的字符串。最后,我需要一个边缘列表,其中每一行都有 B 公司,数据取自 B 公司周围的公司,以逗号分隔的字符串表示。

4

1 回答 1

0

在 R 中有几种方法可以做到这一点。这是在基础 R 中做到这一点的一种方法:

myc <-c("A,B,D","C,A,E,B","F,B")
myc <-strsplit(myc,",") #split value on comma

res <-lapply(myc,combn,2,simplify = FALSE) #create cominations
out <-matrix(unlist(res),ncol=2,byrow=TRUE) #create dataframe of combinations
out[colSums(apply(out,1,match,"B"),na.rm=TRUE)==1,] #keep only combinations with "B"
     [,1] [,2]
[1,] "A"  "B" 
[2,] "B"  "D" 
[3,] "C"  "B" 
[4,] "A"  "B" 
[5,] "E"  "B" 
[6,] "F"  "B" 
于 2015-10-18T14:43:55.560 回答