1

我正在尝试添加两个数据框的列。数据框包含从 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

现在我需要添加两个数据框的“放电”列villedisbornedis. 似乎bornedis缺少一些数据。添加这些数据框并将值而不是 NA 放在缺失值上的有效方法是什么?

4

1 回答 1

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
于 2013-06-06T04:25:17.190 回答