2016-09-02 10 views
-4

作成:these dataからは数ヶ月にラウンド、その後、日付クラスに非常に醜い日付を変換し、最終的に私はこのプロット描きたいプロット

を。データの先頭:

x <- read.csv2(text= 
"strategy;success;date 
1;1;02.09.2007 
1;0;4/19/2012 
1;1;2/15/2013 
1;0;3/17/2004 
1;1;12.02.2004 
2;1;7/28/2014 
1;1;9/29/2003 
1;1;04.02.2004 
1;1;09.02.2004 
1;1;12/21/2004 
1;1;6/23/2005 
1;1;7/26/2005 
1;1;8/24/2005 
1;1;12.08.2005 
1;1;01.10.2006 
1;1;1/27/2006 
1;1;07.10.2006 
1;1;8/31/2006 
1;1;3/20/2007 
1;1;4/26/2007 
1;1;6/27/2007 
1;1;6/26/2007 
1;1;7/16/2007 
1;1;08.07.2007 
1;1;2/26/2008 
1;1;03.05.2008 
1;1;04.10.2008 
1;1; 
1;1;09.01.2008 
1;1;10/15/2008 
1;1;10/23/2008 
1;1;12/31/2008 
1;1;1/22/2009") 

私は列1の1を持っているデータのみを選択したい:

x_selected <- x[x[,1]=="1", ] 

私は日付の列が間違っているクラスであることに気づき、非常に不均質:

class(x_selected[,3]) 
## "factor" 

は、それから私は、日付にこの醜い日付(不均質ではない)を変更したいが、私は日付を適応させる方法を見つけ出すカント?私の最高の試みは失敗しました:

for (i in 1:nrow(x_selected)){ 
    x_selected[i,3] <- as.Date(x_selected[i,3], "%d/%m/%Y") 
} 

私の次のステップは、4分の1に単一の日付のグループに次のようになります。私は、さらにいずれかを取得することができていない

for (i in 1:nrow(x_selected)) { 
    x_selected[i,3] <- round_date(x_selected[i, 3], unit = c("quarter")) 
} 

。 :-(

+0

誰も大ざっぱリンクからダウンロードデータを行くことは特に傾斜ではありません。代わりに、あなたの質問にあなたのデータの関連する部分集合を編集してください。理想的には 'dput'で作られています。 [詳細はこちらを読む](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) – alistaire

+0

日付を解析するには、 'lubridate :: mdy(x $ date) 'となります。四半期では、 'lubridate :: quarter(...、with_year = TRUE)'でラップするか、より便利には 'zoo :: as.yearqtr'を使用します。 – alistaire

答えて

1

はここでスタートだ:。

x2 <- subset(x,strategy==1) 

は交換してください/

x2 <- transform(x2,date=gsub("\\.","/",as.character(date))) 

とセパレータ年/四半期に

x2$q <- zoo::as.yearqtr(x2$date2) 
変換

x2$date2 <- as.Date(x2$date,format="%m/%d/%Y") 

を日付に変換3210

四半期ごとの成功の割合:

with(x2,tapply(success,list(q),mean)) 
+1

ゴルフに行き、 'gsub'の代わりに' chartr( "、"/"、date)'を実行できました。しかし、私は 'gsub'も' as.character'を内部的にやると思います。 –

関連する問題