私は、不注意な時間形式でデータをエクスポートする楽器を持っています。 date
とtime
のベクターを、POSIXct
という形式の新しいdatetime
ベクターに組み合わせる必要があります。%Y-%m-%d %H:%M:%S
です。私は、好奇心のために、as.POSIXct()
,strftime()
、およびstrptime()
を使用して、3つの異なる方法でこれを実行しようとしました。私のの例データを使用しているときは、as.POSIXct()
とstrftime()
の機能しか使えませんが、なぜstrptime()
がNAs
を生産しているのか不思議です。また、私は(私は唯一の行の最初をご提供してきましたその)私の実際のデータに、これらと同じ機能をしようとしたとき、私は... as.POSIXct()
を使用してPOSIXct
オブジェクトにdatetimeを文字からPOSIXctオブジェクトに変換する
をstrftime()
出力を変換することはできませんまったく別の問題に遭遇します。 strftime()
機能のみが動作しています。私は実際にPOSIXct
オブジェクトに私のdatetime
を変換するために必要な唯一のコマンドですas.POSIXct()
機能もNAs
を生産しているいくつかの理由で、...
のために、これらの機能の間の微妙な違いがあるようだ、と私が知りたいですそれらをより効果的に使用する方法。ありがとう!
## Reading in the file:
fpath <- "~/real_data.txt"
x <- read.csv(fpath, skip = 1, header = FALSE, sep = "", stringsAsFactors = FALSE)
names(x) <- c("date","time","bscat","scat_coef","pressure_mbar","temp_K","CH1","CH2") ## This is data from a Radiance Research Integrating Nephelometer Model M903 for anyone who is interested!
## If anyone could get this to work that would be awesome!
x$datetime1 <- as.POSIXct(paste(x$date, x$time), format = "%Y-%m-%d %H:%M%:%S", tz = "UTC")
## This still doesn't work...
x$datetime2 <- strptime(paste(x$date, x$time), format = "%Y-%m-%d %H:%M%:%S", tz = "UTC")
## This works:
x$datetime3 <- strftime(paste(x$date, x$time), format = "%Y-%m-%d %H:%M%:%S", tz = "UTC")
## But I cannot convert from strftime character to POSIXct object, so it doesn't help me at all...
x$datetime4 <- as.POSIXct(x$datetime3, format = "%Y-%m-%d %H:%M%:%S", tz = "UTC")
head(x)
:
real_data.txtを使用して
here
例:
再現例:
## Creating dataframe:
date <- c("2017-04-14", "2017-04-14","2017-04-14","2017-04-14")
time <- c("14:24:24.992000","14:24:25.491000","14:24:26.005000","14:24:26.511000")
value <- c("4.106e-06","4.106e-06","4.106e-06","4.106e-06")
data <- data.frame(date, time)
data <- data.frame(data, value) ## I'm sure there is a better way to combine three vectors...
head(data)
## Creating 3 different datetime vectors:
## This works in my example code, but not with my real data...
data$datetime1 <- as.POSIXct(paste(data$date, data$time), format = "%Y-%m-%d %H:%M:%S",tz="UTC")
class(data$datetime1)
## This is producing NAs, and I'm not sure why:
data$datetime2 <- strptime(paste(data$date, data$time), format = "%Y-%m-%d %H:%M%:%S", tz = "UTC")
class(data$datetime2)
## This is working just fine
data$datetime3 <- strftime(paste(data$date, data$time), format = "%Y-%m-%d %H:%M%:%S", tz = "UTC")
class(data$datetime3)
head(data)
## Since I cannot get the as.POSIXct() function to work with my real data, I tried this workaround. Unfortunately I am running into trouble...
data$datetime4 <- as.POSIXct(x$datetime3, format = "%Y-%m-%d %H:%M%:%S", tz = "UTC")
リンク実際のデータへ
ソリューション:
私は正しいフォーマット文字列でas.POSIXct()
機能を提供していませんでした。 %Y-%m-%d %H:%M%:%S
を%Y-%m-%d %H:%M:%S
に変更すると、data$datetime2
、data$datetime4
、x$datetime1
、x$datetime2
が正しく機能していました。デバッグのためのPhilC
への大きな感謝!
**ありがとうございました!**私の脳は私のトリックを演奏していました!何らかの理由で私はそれを見ることができませんでしたが、あなたがそれを指摘したので、それはとても明らかです!私は今休憩するつもりだと思う – spacedSparking