2017-04-06 14 views
0

私はこのようなデータフレームを持っています。rownamesと列名が一致しないときにR行列からGet.Edgelist

    Abdominal pain Chest pain Flu-like Liver Damage Nausea Numbness Swelling 
     Avandaia     1   0  0   1  1  1  1 
     Warfrin     0   1  1   0  1  1  1 
     Flu-like     0   0  0   0  0  0  0 
     Liver Damage    0   0  0   0  0  0  0 
     Nausea     0   0  0   0  0  0  0 
     Numbness     0   0  0   0  0  0  0 
     Swelling     0   0  0   0  0  0  0 

私はこのようになりますedgelistを取得したい:

Abdominal Pain | Avandaia 
Chest Pain  | Warfrin 
Flu-Like  | Warfrin 
Liver Damage | Avandaia 
Nausea   | Avanadia 
Nausea   | Warfrin 
.... 
.... 
隣接行列でget.edgelistする前に、私はRのIGRAPHパッケージを使用しました

が、私はそのような場合には信じていrownames列名は一致しなければなりません。行と列の名前が異なるこのようなデータフレームではどうすればいいですか?

ありがとうございます!

答えて

0

igraph

df <- read.csv(text="Drug,Abdominal pain,Chest pain,Flu-like,Liver Damage,Nausea,Numbness,Swelling 
Avandaia,1,0,0,1,1,1,1 
Warfrin,0,1,1,0,1,1,1 
Flu-like,0,0,0,0,0,0,0 
Liver Damage,0,0,0,0,0,0,0 
Nausea,0,0,0,0,0,0,0 
Numbness,0,0,0,0,0,0,0 
Swelling,0,0,0,0,0,0,0 
", check.names=FALSE) 


library(tidyr) 
gather_(df, "Symptom", "Count", setdiff(names(df),"Drug")) %>% 
    filter(Count > 0) 

library(data.table) 
setDT(df) 
melt.data.table(df, measure.vars=setdiff(names(df),"Drug"))[value>0] 
を使用せずに、いくつかのソリューション
関連する問題