2012-07-30 25 views
0

我有一個數據框,其起點和終點之間有距離。起點在行中,終點在列中。現在我想讓它們逐一打印(起點終點距離換行符)。缺少值(NAs)應該被忽略。R將數據框導出爲條目列表

這是我的數據幀:

  EndPoint 
    StartPoint TX001 TX002 TX003 
     TX002 37.4  NA  NA 
     TX003 NA 14.78704  NA 
     TX005 NA  NA 60.78947 

我想要得到的是:

TX002 TX001 37.4 
    TX003 TX002 14.78704 
    TX005 TX003 60.78947 

任何幫助是極大的讚賞。

+2

目前還不清楚該數據幀是如何構成的:請你'dput(MYDATA)'(或任何數據幀的名稱),併發布結果,這將使我們能夠重現 – 2012-07-30 20:11:03

回答

1

如果我已經錯過了標記,請使用dput提供數據的樣本。但是,假設你的數據是這樣的:

dat <- structure(list(StartPoint = c("TX002", "TX003", "TX005"), TX001 = c(37.4, 
NA, NA), TX002 = c(NA, 14.78704, NA), TX003 = c(NA, NA, 60.78947 
)), .Names = c("StartPoint", "TX001", "TX002", "TX003"), class = "data.frame", row.names = c(NA, 
-3L)) 

您可以從reshape2包中使用melt,然後用na.omit刪除多餘的行。

> na.omit(melt(dat, 
       id.var='StartPoint', 
       variable.name='EndPoint', 
       value.name='Distance')) 

    StartPoint EndPoint Distance 
1  TX002 TX001 37.40000 
5  TX003 TX002 14.78704 
9  TX005 TX003 60.78947 
+0

完美,謝謝很多幫助 – sugo 2012-07-30 21:16:34