質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

Q&A

解決済

2回答

17519閲覧

Rで日付、時間を条件にデータを取り出す方法

KojiroYamamoto

総合スコア21

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

0グッド

0クリップ

投稿2018/05/10 07:51

編集2018/05/10 08:26

Rで日付と時間を条件にデータを取り出したいです。

date天気
2017/09/04 09:37:14晴れ
2017/09/04 09:38:15晴れ
2017/09/05 09:37:14曇り
2017/09/05 09:40:14曇り
2017/09/06 09:37:14

上記のようなcsvファイルlog.acとして読み込み、条件指定後のデータをlog.actに入れるとして、

R

1log.ac$date <- as.Date(log.ac$date) 2log.act <- subset(log.ac , date > as.Date("2018/09/04") & date < as.Date("2018/09/06") )

このようにしてみたのですが、時間の情報が消えてしまいました。
時間も一緒に取得するにはどのようにすればよいでしょうか?
また、日付と時間の両方を条件に指定することはできるのでしょうか?
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

to.Dateは文字列をDateオブジェクトに変換します。私も今はじめて使ってみましたが、どうも「年月日」しか守備範囲としていないようです。

strptimeを使うと、POSIXltクラスという、もう少し気の利いたものに変換できます。

R

1log.ac <- read.table( 2 text="date,weather 3 2017/09/04 09:37:14,晴れ 4 2017/09/04 09:38:15,晴れ 5 2017/09/05 09:37:14,曇り 6 2017/09/05 09:40:14,曇り 7 2017/09/06 09:37:14,雨", 8 sep=",", header=T, stringsAsFactors=F 9) 10 11f <- "%Y/%m/%d %H:%M:%S" 12log.ac$date <- strptime(log.ac$date, format=f) 13 14# check date 15print(log.ac$date) 16 17# attempt to select "2017/09/05 09:40:14" data 18before <- strftime("2017/09/05 09:38:00", format=f) 19after <- strftime("2017/09/05 10:00:00", format=f) 20print(subset(log.ac, before<date & date<after)) 21

投稿2018/05/10 13:42

編集2018/05/10 13:47
KojiDoi

総合スコア13669

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KojiroYamamoto

2018/05/10 14:21

時間はDateでは扱えないんですね・・・ strptime初めて拝見しました有難うございます!
guest

0

時間情報が消えたのは、一行目の処理にてDate列を上書きしているためなのではないでしょうか?

とりあえず一行目の処理をやめて

R

1log.act <- subset(log.act , as.Date(date) > as.Date("2018/09/04") & as.Date(date) < as.Date("2018/09/06") )

としてみてください

投稿2018/05/10 11:46

magichan

総合スコア15898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問