1

私は次のデータを持っています

あ 1 6
2 72
A3 90
4 81
5 81
6 42
あ 7 12
8 32
9 34
10 92
B 1 44
B2 54
B3 10
B 4 21
B5 47
B 6 35
B 7 94
乙 8 5
B 9 35
B 10 77
乙 11 9
B 12 52
B 13 73
B 14 93
B 15 38
B 16 85
B17 90
B 18 47

私の出力は

あ 1 6 1
A 2 72 1
A 3 90 2
4 81 2
A 5 81 3
6 42 3
7 12 4
8 32 4
9 34 5
10 92 5
B 1 44 1
B 2 54 1
B 3 10 1
乙 4 21 1
B 5 47 1
B 6 35 2
B 7 94 2
乙 8 5 2
B 9 35 2
B 10 77 3
乙 11 9 3
B 12 52 3
B 13 73 3
B 14 93 4
乙 15 38 4
B 16 85 4
B 17 90 4
乙 18 47 4

bin(last) 列は、最初の列の項目の長さに基づいて計算する必要があります。したがって、各ビンで A= 10/5 = 2 の場合

B の場合、各ビンで 18/5 = 3.6....

seq bin = seq(from=, to=, by=) を使用してみましたが、どうすればよいかわかりません。どんな助けでも大歓迎です。ありがとうございました

4

3 に答える 3

2

使用data.table:

setDT(x)[,output:=ceiling(5*(1:.N)/.N),by=V1]
> x
    V1 V2 V3 output
 1:  A  1  6      1
 2:  A  2 72      1
 3:  A  3 90      2
 4:  A  4 81      2
 5:  A  5 81      3
 6:  A  6 42      3
 7:  A  7 12      4
 8:  A  8 32      4
 9:  A  9 34      5
10:  A 10 92      5
11:  B  1 44      1
12:  B  2 54      1
13:  B  3 10      1
14:  B  4 21      2
15:  B  5 47      2
16:  B  6 35      2
17:  B  7 94      2
18:  B  8  5      3
19:  B  9 35      3
20:  B 10 77      3
21:  B 11  9      4
22:  B 12 52      4
23:  B 13 73      4
24:  B 14 93      4
25:  B 15 38      5
26:  B 16 85      5
27:  B 17 90      5
28:  B 18 47      5
    V1 V2 V3 output
于 2015-07-21T22:44:08.213 に答える
0

私はこれを試しました

    split(df,df$Gene) -> 遺伝子
    遺伝子[1] -> g
    as.data.frame(g) ->g1


    FindBin = 関数(データ){
    開始=0
    END=長さ(g1$A.Base)
    noOfBin=20
    jump=END/noOfBin
    bin = seq(from=START, to=END, by=jump)
    g1$bin_index = findInterval(g1$A.Base, bin)
    }
    g1$m1bin=FindBin(g1)

今、私はビンを取得します..しかし、dfを異なる遺伝子に分割したので、これをすべての分割dfで実行する方法

于 2015-07-20T20:35:15.180 に答える