2015-10-20 57 views
0

我正在處理一個類的任務,並從一些奇怪的500個混亂的文本文件創建了一個非常大的數據框。我目前在我的大數據框中有一個Date,Latitude,Longitude和一系列不同天氣讀數的列。重新配置一個數據集

我給了這個.dat文件,其中包含一些緯度和經度點的高程數據,雖然格式不是我需要它的方式,以便將相關信息綁定到我的數據框。經度在列標題中(當我使用read.table()),緯度在「rownames」列中。

read.table(.dat)

rownames 113.75 111.25 108.75 
36.25 1526.75 1759.56 1948.38 
33.75 612.94 1079.12 1979.31 
31.25 328.62 1228.88 1483.69 

期望的數據幀

Longitude Latitude Elevation 
113.75 36.25 1526.75 
113.75 33.75 612.94 
113.75 31.25 328.62 
111.25 36.25 1759.56 
111.25 33.75 1079.12 
111.25 31.25 1228.88 
108.75 36.25 1948.38 
108.75 33.75 1979.31 
108.75 31.25 1483.69 

我想改變成具有用於經緯度和高程讀取列的數據幀,這樣我可以添加相應的高度數據進入我的大數據框。我很難找到一個函數,或者寫一個正則表達式來完成這個任務。請讓我知道我應該如何繼續!

回答

1

您可以使用reshape2插件來幫助融合您的數據。例如

dat<-read.table(text="rownames 113.75 111.25 108.75 
36.25 1526.75 1759.56 1948.38 
33.75 612.94 1079.12 1979.31 
31.25 328.62 1228.88 1483.69", header=T, check.names=F) 

long <- reshape2::melt(dat, "rownames") 
long$variable<-as.numeric(as.character(long$variable)) 
long <- setNames(long, c("Latitute","Longitude","Elevation")) 

long 
# Latitute Longitude Elevation 
# 1 36.25 113.75 1526.75 
# 2 33.75 113.75 612.94 
# 3 31.25 113.75 328.62 
# 4 36.25 111.25 1759.56 
# 5 33.75 111.25 1079.12 
# 6 31.25 111.25 1228.88 
# 7 36.25 108.75 1948.38 
# 8 33.75 108.75 1979.31 
# 9 31.25 108.75 1483.69 

str(long) 
# 'data.frame': 9 obs. of 3 variables: 
# $ Latitute : num 36.2 33.8 31.2 36.2 33.8 ... 
# $ Longitude: num 114 114 114 111 111 ... 
# $ Elevation: num 1527 613 329 1760 1079 ...