2016-05-15 7 views
-1

データセットに日付が入っている列があり、その値を週値に置き換えたいと思います。特定の期間(たとえば、2016年1月1日から2016年1月7日)を設定し、その範囲内の任意の日付が別の値(たとえば1週目)に置き換えられるたびに設定する方法があります。何か助けてくれてありがとう!以下はRの範囲の範囲の置換R

私が働いているデータセットです。

Text Date   
Text 1 2016-02-05 10:55:00 
Text 2 2016-02-09 10:56:28 
Text 3 2016-02-18 20:40:33 


Desired output: 

Text Date   
Text 1 Week 1 
Text 2 Week 2 
Text 3 Week 3 
+0

をそれは、あなたの日付変数に依存'lubridate'パッケージの' week() '関数を使って週番号を取得することができます。しかし、それが何年にもわたっているならば、あなたは変換するために「カット」のようなことをする必要があります。 – Psidom

+0

週は1学期の週です。彼らは1月の終わりに始まり、現在までに合計12回実行されます。それは事に影響を及ぼしますか? – Claire

+0

1年以内であれば 'week()'関数を使うことができます。 – Psidom

答えて

0

コメントで明確化に続いて、このコードが期待される出力得なければならない:あなたの日付は単一年以内であれば

SemStartWeek <- 5 #variable introduced to avoid obscure "magic numbers" in code 
df1$Date <- paste("Week",as.numeric(strftime(df1$Date),"%W")) - SemStartWeek + 1) 
# Text Date 
#1 Text 1 Week 1 
#2 Text 2 Week 2 
#3 Text 3 Week 3 

データ

df1 <- structure(list(Text = structure(1:3, .Label = c("Text 1", "Text 2", 
       "Text 3"), class = "factor"), Date = structure(1:3, 
       .Label = c("2016-02-05 10:55:00", "2016-02-09 10:56:28", 
       "2016-02-18 20:40:33"), class = "factor")), .Names = c("Text", 
       "Date"), class = "data.frame", row.names = c(NA, -3L)) 
+0

これは今年の週です。私は彼らが間違っていなければ、彼らが月の週をしたいと思う。 –

+0

これは学期の週である。だから1-12があり、彼らは1月末に始まります。 – Claire

+0

@Claire説明をありがとう。それに応じてコードを更新しました。それは提供された日付が学期に入るかどうかをチェックしないので、必ずしも "週1"から "週12"に限定されるわけではありません。無効なデータのケースを処理するための例外処理は、コードに導入するのは簡単ですが、この質問の範囲を超えているようです。 – RHertel

0

lubridateのwdayを使用するのがベスト。あなたはそれを持っていない場合は、最初のそれをインストール:

install.packages("lubridate") 

を簡単な例として:

library(lubridate) 
mydate <- as.Date("2016-02-05 10:55:00", format = "%Y-%m-%d") 
wday(mydate) 

PS:1は日曜日です。列全体のためにそれを行うには

:これは、あなたの質問に答える場合

dat$Week <- wday(
    as.Date(dat$Date, format = "%Y-%m-%d") 
) 

は親切ソリューション& /またはアップ投票それをとしてそれをマークします。

+0

Rubridateライブラリが存在しないとのことですか? – Claire

+0

あなたはそれをインストールする必要があります。 'install.packages(" lubdridate ")' – user10853