6

私のExcelデータファイルの形式は次のとおりです。

 day                 value
 01-01-2000 00:00:00    4
 01-01-2000 00:01:00    3
 01-01-2000 00:02:00    1
 01-01-2000 00:04:00    1

私はこれで私のファイルを開きます:

ts = read.csv(file=pathfile, header=TRUE, sep=",")

列「値」の数値がゼロの行をデータフレームに追加するにはどうすればよいですか。出力例:

 day                  value
 01-01-2000 00:00:00    4
 01-01-2000 00:01:00    3
 01-01-2000 00:02:00    1
 01-01-2000 00:03:00    0
 01-01-2000 00:04:00    1
4

4 に答える 4

3

これは、すべてのタイムスタンプのシーケンスを作成し、それを新しいデータ フレームの基礎として使用し、該当する場合はその df に元の値を入力する、より一般的なソリューションだと思います。

# convert original `day` to POSIX
ts$day <- as.POSIXct(ts$day, format="%m-%d-%Y %H:%M:%S", tz="GMT")

# generate a sequence of all minutes in a day
minAsNumeric <- 946684860 + seq(0,60*60*24,by=60) # all minutes of your first day
minAsPOSIX <- as.POSIXct(minAsNumeric, origin="1970-01-01", tz="GMT") # convert those minutes to POSIX

# build complete dataframe
newdata <- as.data.frame(minAsPOSIX)
newdata$value <- ts$value[pmatch(newdata$minAsPOSIX, ts$day)] # fill in original `value`s where present
newdata$value[is.na(newdata$value)] <- 0 # replace NAs with 0
于 2013-05-24T22:49:50.650 に答える
1

試す:

ts = read.csv(file=pathfile, header=TRUE, sep=",", stringsAsFactors=F)
ts.tmp = rbind(ts,list("01-01-2000 00:03:00",0))
ts.out = ts.tmp[order(ts.tmp$day),]

最初の列の文字列を要素ではなく文字として強制的にロードする必要があることに注意してください。そうしないと、rbind で問題が発生します。日列を単に実行するよりも後の要素にするには、次のようにします。

ts.out$day = as.factor(ts.out$day)
于 2013-05-24T20:16:00.767 に答える