2016-09-12 149 views
0

我擁有帶有字段recipeid,ingredientname的csv格式的數據。我想對數據進行分析,並且需要將其格式化爲其中一個成分名稱是起始節點,另一個作爲具有第三列的末端節點作爲配方中這兩種成分的出現次數。在R中有這樣的命令嗎?通過計算R中組合的出現次數來轉換數據

目前的數據是這樣的:

recipeid | ingredientname 
-------- | --------------- 
01  | A 
01  | B 
01  | C 
02  | A 
02  | B 
02  | D 
03  | B 
03  | D 

,我想:

StartNode | EndNode | Occurrence 
----------|---------|------------ 
    A  | B  | 2 
    B  | D  | 2 
    B  | C  | 1 
+1

您可以檢查'igraph'封裝的 – akrun

+0

可能的複製[如何計算從長格式的數據幀成對計數表(HTTP: //stackoverflow.com/questions/13176741/how-to-calculate-a-table-of-pairwise-counts-from-long-form-data-frame) –

回答

4

我不認爲這需要一個圖形對象。你可以通過查看前一行來到那裏。例如:

tmp <- data.frame(
    start=ave(dat$ingredientname, dat$recipeid, FUN=function(x) c(NA,head(x,-1))), 
    end=dat$ingredientname 
) 
aggregate(count ~ ., data=transform(tmp,count=1), FUN=sum) 

# start end count 
#1  A B  2 
#2  B C  1 
#3  B D  2 

其中dat是:

dat <- read.table(text="recipeid ingredientname 
01  A 
01  B 
01  C 
02  A 
02  B 
02  D 
03  B 
03  D",header=TRUE,stringsAsFactors=FALSE)