2014-01-24 7 views
5

시간이 지남에 따라 변하는 응답 변수가 있다고 가정 해 봅시다. 응답 변수가 임계 값 이상으로 올라갈 때마다 새로운 "평가판"이 생깁니다. 즉, 특정 값 이상이 될 때마다 ThresholdTRUE 열을 추가하면 ThresholdTRUE 인 연속 데이터 요소 블록이 새로운 평가판을 구성합니다. 임계 값에 따른 데이터 Binning?

Time <- seq(1, 10, by = 0.5) 
Response <- abs(sin(Time)) 
Threshold <- Response > 0.6 
data <- data.frame(Time, Response, Threshold) 

Time Response을 감안할 때, 그리고 Threshold는 어떻게 TRUE 임계 값의 각 그룹에 대한 새 값을 갖는 Trial 요소를 추가하는 방법에 대한 갈 수 있을까? 이런 식으로 뭔가 :

Time Response Threshold Trial 
1 1.0 0.84147098  TRUE A 
2 1.5 0.99749499  TRUE A 
3 2.0 0.90929743  TRUE A 
4 2.5 0.59847214  FALSE NA 
5 3.0 0.14112001  FALSE NA 
6 3.5 0.35078323  FALSE NA 
7 4.0 0.75680250  TRUE B 
8 4.5 0.97753012  TRUE B 
9 5.0 0.95892427  TRUE B 
10 5.5 0.70554033  TRUE B 
11 6.0 0.27941550  FALSE NA 
12 6.5 0.21511999  FALSE NA 
13 7.0 0.65698660  TRUE C 
14 7.5 0.93799998  TRUE C 
15 8.0 0.98935825  TRUE C 
16 8.5 0.79848711  TRUE C 
17 9.0 0.41211849  FALSE NA 
18 9.5 0.07515112  FALSE NA 
19 10.0 0.54402111  FALSE NA 

답변

3
data$Trial <- factor(
    ifelse(data$Threshold, cumsum(!data$Threshold), NA), labels = c("A", "B", "C") 
) 

## Time Response Threshold Trial 
## 1 1.0 0.84147098  TRUE  A 
## 2 1.5 0.99749499  TRUE  A 
## 3 2.0 0.90929743  TRUE  A 
## 4 2.5 0.59847214  FALSE <NA> 
## 5 3.0 0.14112001  FALSE <NA> 
## 6 3.5 0.35078323  FALSE <NA> 
## 7 4.0 0.75680250  TRUE  B 
## 8 4.5 0.97753012  TRUE  B 
## 9 5.0 0.95892427  TRUE  B 
## 10 5.5 0.70554033  TRUE  B 
## 11 6.0 0.27941550  FALSE <NA> 
## 12 6.5 0.21511999  FALSE <NA> 
## 13 7.0 0.65698660  TRUE  C 
## 14 7.5 0.93799998  TRUE  C 
## 15 8.0 0.98935825  TRUE  C 
## 16 8.5 0.79848711  TRUE  C 
## 17 9.0 0.41211849  FALSE <NA> 
## 18 9.5 0.07515112  FALSE <NA> 
## 19 10.0 0.54402111  FALSE <NA> 
2

또 다른 가능성은 rle 사용 :

r <- with(data, rle(Threshold)) 
len <- with(r, lengths[values]) 
n <- length(len) 

trial <- rep(x = LETTERS[1:n], times = len) 

data$Trial[data$Threshold] <- trial 

data 
+0

1. 데이터가 커질수록 Jake의 대답보다 빠릅니다. 그것은 더욱 최적화 될 수 있습니다. 여기를 참조하십시오 : https://gist.github.com/mrdwab/8601445 – A5C1D2H2I1M1N2O1R2T1

+0

@AnandaMahto, 의견을 주셔서 감사 드리며 개선을위한 제안을드립니다! – Henrik

관련 문제