2014-09-25 67 views
3

您好我只需要與每個日期的當天仍然存在:[R提取一天

df<-data.frame(x=c("2014-07-24 00:00:00", 
"2014-07-24 00:00:00", "2014-07-11", "2014-07-11" ,"2014-07-16" ,"2014-07-14")) 
as.Date(df$x,format="%Y-%m-%d") 

我嘗試這樣做:

df$dia<-as.Date(df$x, format="%d") 

但我從原單一個完整的日期和不同。

我不想安裝另一個軟件包來執行此操作。 我該如何解決它? 謝謝

+1

'df $ x < - as.Date(df $ x)'?你想要一天的名字嗎? '平日(df $ x)'你想要一個數字結果嗎?你的問題不清楚。 – 2014-09-25 16:37:39

+2

根據定義,日期是年,月和日。您需要爲人們提供更多信息以最好地幫助您。一些'df $ x'的值有時間。他們在什麼時區?時間總是「00:00:00」嗎?如果你只想把一天當成一個字符串,你可以使用'format(as.Date(df $ x,format =「%Y-%m-%d」),「%d」)''。 – 2014-09-25 16:37:51

回答

16

您是否在尋找format

format(as.Date(df$x,format="%Y-%m-%d"), "%d") 
# [1] "24" "24" "11" "11" "16" "14" 
1

嘗試:

sapply(strsplit(as.character(df$x), '-'), function(x) x[3]) 
[1] "24" "24" "11" "11" "16" "14" 
1

由於您的結果將不再是一個日期,無論如何,你可以使用gsub

gsub("(.*)[-]", "", df$x) 
# [1] "24" "24" "11" "11" "16" "14" 
3

如果你的約會總是在相同的位置和格式,你有另一種選擇substr()。下面的電話從第9個位置開始 - 一天的開始 - 並以第10個 - 當天的第二個數字結束。

substr(x = df$x, start = 9, stop = 10) 
[1] "24" "24" "11" "11" "16" "14" 
0

您可以簡單地使用工作日(df $ date)從日期中提取星期幾。只確保列的類型是Date或使用as.Date()進行轉換。 希望這會有所幫助:)