這是基於我昨天提出的問題。它變得非常混亂,所以我再次嘗試一個更清晰的問題。基於標識符的標記範圍
我有一個很大的數據集。
>head(raw)
ps cond pass sample stim gsr
1 1 2 0 0 0 100
2 1 2 0 1 0 100
3 1 2 0 2 0 100
4 1 2 0 3 0 100
5 1 2 0 4 0 100
6 1 2 0 5 0 100
的$ STIM列由各個時期的編號1-11(每個週期持續20 $樣品),用0較長的嵌段(持續140 $樣品)。
對於每$ STIM == 10,I需要標記後續的範圍:
例如,
計數(原始樣品$ [原料$ PS == 1 &原料$ STIM == 10])#此1個主題數作爲一個例子
x freq
1 1100 1
2 1101 1
3 1102 1
4 1103 1
5 1104 1
6 1105 1
7 1106 1
8 1107 1
9 1108 1
10 1109 1
11 1110 1
12 1111 1
13 1112 1
14 1113 1
15 1114 1
16 1115 1
17 1116 1
18 1117 1
19 1118 1
20 1119 1
所以我想範圍的開頭STIM $ == 10的最後一個單元格後,啓動10個細胞(在本例中爲1119 ,所以我們從1120開始。我們需要從這個地方算起10: 1130.範圍的末尾是從1130 = 1180開始的50美元的樣本。
所以。我想我需要的是在我的原始文件中添加一個新列,它標記TRUE在分析中使用的單元格。在上面的例子中,它們是$ sample == 1130和1180之間的範圍。
我不想親自去經過。我正在尋找一種更爲自動化的方式來勾選範圍。
我希望現在更清楚我的目標是什麼?
進一步的信息:由於前一個錯誤
> sort(unique(rle(raw$n.filter)$length))
40 50 590 1080 1130 1240 1400 1560 1720 1880 2030 2040 2200 2360
> summary(raw$stim)
0 1 2 3 4 5 6 7 8 9 10 11
286440 3720 3720 3720 3720 3720 3720 3720 3720 3720 3720 3720
> summary(raw$stim[raw$ps==1])
0 1 2 3 4 5 6 7 8 9 10 11
1540 20 20 20 20 20 20 20 20 20 20 20
> summary(raw$stim[raw$ps==186])
0 1 2 3 4 5 6 7 8 9 10 11
1540 20 20 20 20 20 20 20 20 20 20 20
@Henrik關閉,但不完全!它似乎在stim == 10之後選擇了40。我會進一步研究你的代碼,看看我能否適應它。非常感謝您的幫助。 – 2011-04-12 14:28:17
嗯,這聽起來不太可能。在c()中的'[]'中的代碼應該返回長度爲50的向量,如果stim == 10的序列每個長度爲20。 如果有的話,您的評論表明這個'c()'序列的第三部分不起作用。 – Henrik 2011-04-12 14:33:57
@Henrik。我的錯。我輸入了錯誤的值。我認爲你是在做我所問的,而不是我需要的。我的錯。我會看看我能否適應你的需求。 – 2011-04-12 14:44:52