我有一个数据框,包含起点和终点之间的距离。起点是行,终点是列。现在我希望逐个打印它们(起点终点距离换行)。应省略缺失值(NAs)。
这是我的数据框:
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
非常感谢任何帮助。
杉
答案 0 :(得分: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))
您可以使用melt
包中的reshape2
,然后使用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