1

2 つのデータフレームの列を追加しようとしています。データフレームは、2010 年から 2012 年までの 3 年間のデータで構成されています。ダウンロード中に、2 つのデータセットの長さが等しくないことがわかりました。これは、一部のデータが欠落していることを意味します。ここで、これらのデータセットを同じ長さにし、最初に線形補間を使用して不足しているデータを埋めたいと思います。その後、データセットを組み合わせることができました。

私が使用したコードは次のとおりです。データセットをコンピューターにダウンロードし、それらのデータ セットを読み取ります。

#######################################################################
# 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

ここで、2 つのデータフレームの「放電」列を追加する必要がありvilledisますbornedisbornedis一部のデータが欠落しているようです。これらのデータ フレームを追加し、欠損値に NA の代わりに値を配置する効率的な方法は何でしょうか?

4

1 に答える 1

1

「merge」を使用して、2 つのデータセットを日付別にマージできます。

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 に答える