2016-12-26 23 views
0

我試圖在R中查看數據框(可用(1/0))中的一列來開始(1)並且一旦參考就停止(0)值變爲零。但一旦它停止存在最小關閉間隔,因此它不能馬上開始即使可用的值是1。建模單元在R中的時間戳

例如: 可用的(參考列)[1100111] 單元(待建模) 1100011] 由於最小停機時間爲3小時,因此機組無法啓動,因爲最短停機時間爲3小時

幫助受到高度讚賞。

這裏是一個Excel示例文件,顯示我想實現的目標。 http://www.filedropper.com/sample_5

+1

嗨,歡迎來到SO。請看看[如何製作一個可重複的例子](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example),這樣其他人就很容易幫忙您。 –

回答

0

1)regexpr如果問題是找到第一1個立即下面兩個連續的0,並返回0,如果沒有,則:

x <- c("1100011", "010101") # test data 

r <- regexpr("001", x) 
ifelse(r > 0, r + 2, 0) 
## [1] 6 0 

2)rollapplyr另一種可能性是分裂字符串轉換爲一個字符串,然後使用rollappyr來查找c("0", "0", "1")子序列。

library(zoo) 

spl <- strsplit(x, "") 
roll <- function(x) which.max(rollapplyr(x, 3, identical, c("0", "0", "1"), fill = FALSE)) 
out <- sapply(spl, roll) 
out <- ifelse(out == 1, 0, out) 
out 
## [1] 6 0 
+0

感謝所有的支持,但我認爲我對問題的描述不是那麼詳盡。 –

+0

這裏是一個示例excel文件的鏈接,它顯示了我想在R中實現的原始數據集太大而無法共享。 http://www.filedropper.com/sample_5 –