2013-06-06 76 views
0

我想添加兩個數據幀的列。數據框包含2010年至2012年的三年數據。下載時,我發現兩個數據集的長度不相等。這意味着一些數據丟失了。現在,我想使這些數據集長度相等,並首先使用線性插值填充缺失的數據。之後,我可以結合數據集。添加不等長的兩個數據幀的列並填充缺失值

我使用的代碼如下。它將數據集下載到計算機上並讀取這些數據集。

####################################################################### 
# Download Data for station 1 
####################################################################### 

url <- "http://nwis.waterdata.usgs.gov/nwis/uv?cb_00060=on&format=rdb&period=&begin_date=2010-01-01&end_date=2012-12-31&site_no=02469761" 
download.file(url,destfile="ville-discharge.txt") 
## Download Date 
##"Wed Jun 05 22:19:36 2013" 

####################################################################### 
## Read the ville data 
####################################################################### 

ville <- read.table("ville-discharge.txt",header=F,skip=23,sep="\t") 
head(ville) 
villedis <- ville[c(-1,-2),c(-1,-2,-4,-6)] 
names(villedis) <- c("date","discharge") 
villedis$date <- strptime(villedis$date,format="%Y-%m-%d %H:%M") 
villedis$discharge <- as.numeric(as.character(villedis$discharge)) 

######################################################################### 
## Download the borne data 
######################################################################## 
url1 <- "http://nwis.waterdata.usgs.gov/nwis/uv?cb_00060=on&format=rdb&period=&begin_date=2010-01-01&end_date=2012-12-31&site_no=02428400" 
download.file(url=url1,destfile="bone-discharge.txt") 
## Download date and time 
# [1] "Wed Jun 05 22:21:45 2013" 

######################################################################## 
## Read the borne data 
######################################################################## 

borne <- read.table("bone-discharge.txt",header=F,sep="\t") 
bornedis <- borne[c(-1,-2),c(-1,-2,-4,-6)] 
names(bornedis)<- c("date","discharge") 
bornedis$date <- strptime(bornedis$date,format="%Y-%m-%d %H:%M") 
bornedis$discharge <- as.numeric(as.character(bornedis$discharge)) 

> dim(villedis) 
[1] 26296  2 
> dim(bornedis) 
[1] 25593  2 

現在我需要添加兩個dataframes villedisbornedis的「放電」一欄。看起來bornedis缺少一些數據。將這些數據框添加到缺失值並將值而不是NA的有效方法是什麼?

回答

1

您可以使用'合併'按日期合併兩個數據集。

new <- merge(villedis, bornedis, by= c("date"), all=TRUE) 

它看起來像

> dim(new) 
[1] 26306  3 
> head(new) 
       date discharge.x discharge.y 
1 2010-01-01 00:00:00  46200  78500 
2 2010-01-01 01:00:00  46300  74100 
3 2010-01-01 02:00:00  46400  77600 
4 2010-01-01 03:00:00  46500  75600 
5 2010-01-01 04:00:00  46500  79000 
6 2010-01-01 05:00:00  46600  75500 

> nrow(subset(new, is.na(discharge.x))) 
[1] 4 
> nrow(subset(new, is.na(discharge.y))) 
[1] 707 
+0

謝謝您的答覆。這是一個合理的解決方案。其實,我有兩個電臺的小時數據,你也可以查看。所以,我想先查看每個電臺的缺失日期和值。找到缺失的日期後,我想使用某種插值填充缺失的值(非常基本的插值會很好)。在兩個數據集的長度相同之後,我想加入它們。 –

+0

謝謝我會問新的問題。 –