我目前正在进行课堂作业,并从一些奇怪的500个混乱的文本文件中创建了一个非常大的数据框。我目前在我的大数据框中有一个日期,纬度,经度和一系列不同天气读数的列。
我得到了这个.dat文件,其中包含一些纬度和经度点的高程数据,但格式不是我需要的格式,以便将相关信息绑定到我的数据框。经度在列标题中(当我使用read.table()时),纬度在" rownames"列。
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
我想将此更改为包含纬度,经度和高程读数列的数据框,以便我可以将相应的高程数据添加到更大的数据框中。我找不到函数或编写实现此功能的正则表达式时遇到问题。请让我知道我应该怎么做!
答案 0 :(得分:1)
您可以使用reshape2
pacakge来帮助融化您的数据。例如
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 ...