2014-08-27 188 views
1

我有來自硬拷貝紙的數據,必須先在Excel文件中手動輸入以後在R中處理。 數據包含針對不同主題的多個讀數變量(讀數) (身份證)在不同日期(2014年8月18日,2014年8月19日)的不同時間點(如08:10,08:20等)。每個閱讀系列的參考開始時間(例如08:00)和參考開始日期(例如,18.08.2014)可用。從Excel中導入的處理日期和時間R

包含數據看起來就像Excel文件這個

ID Reading Date  Time Ref/Start Time Ref/Start Date 
1 12.1 18.08.2014 7:59 8:00   18.08.2014 
1 26.34 18.08.2014 8:10 8:00   18.08.2014 
1 35.2 18.08.2014 8:20 8:00   18.08.2014 
1 30  18.08.2014 8:30 8:00   18.08.2014 
1 12  19.08.2014 8:00 8:00   18.08.2014 
1 13  19.08.2014 20:00 8:00   18.08.2014 
1 12  20.08.2014 8:00 8:00   18.08.2014 

這些數據在河在以後處理我的目標是產生一個包含在以後每個小時的閱讀時間的新列每個閱讀系列的開始時間點。所以說得到(y)與(x)其中(x)是從一開始就以小時爲單位的時間。 我現在將這個excel文件導入到R中(以前保存爲.csv),但我不知道現在應該如何繼續在R中生成新列!我應該在Excel中以其他方式插入數據嗎?

我希望我能夠成功地澄清我需要的東西,並且我可以從某人那裏找到幫助之手。

非常感謝提前。

回答

2

有很多方法可以做到這一點。這是一個。

假設你有一個名爲CSV文件中的數據time_d.csv你可以這樣做:

time_d.csv看起來是這樣的:

ID Reading Date Time Ref_time Ref_date 
1 12.1 18.08.2014 07:59 08:00 18.08.2014 
1 26.34 18.08.2014 08:10 08:00 18.08.2014 
1 35.2 18.08.2014 08:20 08:00 18.08.2014 
1 30  18.08.2014 08:30 08:00 18.08.2014 
1 12  19.08.2014 08:00 08:00 18.08.2014 
1 13  19.08.2014 20:00 08:00 18.08.2014 
1 12  20.08.2014 08:00 08:00 18.08.2014 

你可以看到,我已經略有改變列標題。然後,以這種格式的.csv,你可以這樣做:

a1=read.csv("time_d.csv") #reads data into R data frame 
a1$date_read=paste(a1$Date, a1$Time, sep=" ") #adds a new col to data frame 
#by merging two existing cols 

a1$date_ref=paste(a1$Ref_date, a1$Ref_time, sep=" ") #adds new col 
a1=subset(a1,select=-c(Date,Time)) #removes the no longer needed cols 
a1=subset(a1,select=-c(Ref_date,Ref_time)) #removes the no longer needed cols 

a1$date_read=as.POSIXct(strptime(a1$date_read,"%d.%m.%Y %H:%M")) #convert 
#to date/time objects 

a1$date_ref=as.POSIXct(strptime(a1$date_ref,"%d.%m.%Y %H:%M")) 

a1$Duration=difftime(a1$date_read,a1$date_ref, units="hours") #adds new col 
#calculating the time difference in hours 

您的特定數據日期的格式是該行重要的: as.POSIXct(strptime(a1$date_read,"%d.%m.%Y %H:%M")) 如果更改日期的格式,那麼你應該改變這行代碼也在R中。

最終的結果看起來是這樣的:

ID Reading   date_read   date_ref   Duration 
1 1 12.10 2014-08-18 07:59:00 2014-08-18 08:00:00 -0.01666667 hours 
2 1 26.34 2014-08-18 08:10:00 2014-08-18 08:00:00 0.16666667 hours 
3 1 35.20 2014-08-18 08:20:00 2014-08-18 08:00:00 0.33333333 hours 
4 1 30.00 2014-08-18 08:30:00 2014-08-18 08:00:00 0.50000000 hours 
5 1 12.00 2014-08-19 08:00:00 2014-08-18 08:00:00 24.00000000 hours 
6 1 13.00 2014-08-19 20:00:00 2014-08-18 08:00:00 36.00000000 hours 
7 1 12.00 2014-08-20 08:00:00 2014-08-18 08:00:00 48.00000000 hours 
+0

很多很多很多的感謝。它沒有工作:)我真的很感激你的幫助下looooot ... – 2014-08-27 11:48:44

+0

此評論額外感謝你爲清你的答案的演示文稿...豎起大拇指 – 2014-08-27 11:56:16

+1

沒有probs。感謝您給出答案。歡迎再來 – 2014-08-27 12:09:57