我真的很擅长使用R
。我试图用数据集做一些基本的东西。我有一个只有一列(date
)的数据集,其中包含参与者在调查中填写的日期:
11/11/2015
11/11/2015
11/11/2015
11/11/2015
11/11/2015
11/11/2015
11/11/2015
11/11/2015
27/11/2015
27/11/2015
etc (there are about 180 more responses)
到目前为止,我已经完成了:
NUdates <- nrow(unique(date))
这表明根据回复有12个唯一日期
接下来我要做的只是返回最早和最晚的日期,以便我有对象:
Emonth # (this would be the earliest month that a participant filled out the survey)
Lmonth # (this would be the latest month that a participant filled out he survey)
Year # (this would be the year the surveys were filled out)
然后使用降价我可以说:
参与者在
r (NUdates)
r (Emonth)
和r (Lmonth)
之间的r (year)
天完成了调查。
答案 0 :(得分:1)
txt <- "11/11/2015
11/11/2015
11/11/2015
11/11/2015
11/11/2015
11/11/2015
11/11/2015
11/11/2015
27/11/2015
27/11/2015"
> dates <- as.Date(scan(text=txt, what=""), format="%d/%m/%Y")
Read 10 items
> dates
[1] "2015-11-11" "2015-11-11" "2015-11-11" "2015-11-11" "2015-11-11"
[6] "2015-11-11" "2015-11-11" "2015-11-11" "2015-11-27" "2015-11-27"
)
要获得Date类对象之间的区别,可以使用-
运算符。
> max(dates) - min(dates)
Time difference of 16 days
要删除无关材料,您可以使用unclass
:
dput(max(dates) - min(dates))
structure(0, units = "days", class = "difftime")
unclass(max(dates) - min(dates))
[1] 16
attr(,"units")
[1] "days"
答案 1 :(得分:0)
这个答案假设您在序列中找到了您的唯一日期。
后续步骤 -
1)确保您的日期按排序顺序排列。你可以通过 -
table <- table[order(table$Date),]
表格是您唯一日期的数据框。
2)使用包timeDate
函数timeFirstDayInMonth()和timeLastDayInMonth()是你需要的。
start_date <- timeFirstDayInMonth(table$Date[1]) #First Date Of First Occuring Month
end_date <- timeLastDayInMonth(table$Date[nrow(table)-1]) #Last Date Of Last Occuring Month
3)你终于可以找到Emonth和Lmonth
Emonth <- format(start_date, format = "%B") #Full Month name
或
Lmonth <- format(end_date, format = "%m") #Decimal Month