R 分成若干个垃圾箱
我有以下数据 A 1 6 A 2 72 A 3 90 A 4 81 A 5 81 A 6 42 A 7 12 A 8 32 A 9 34 A 10 92 B 1 44 B 2 54 B 3 10 B 4 21 B 5 47 B 6 35 B 7 94 B 8 5 B 9 35 B 10 77 B 11 9 B 12 52 B 13 73 B 14 93 B 15 38 B 16 85 B 17 90 B 18 47 A 16 A 2 72 A 390 A 4 81 A 581 A 6 42 A 7 12 A 8 32 A 9 34 A 1092 B 1 44 B 2 54 B 3 10 B 4 21 B 5 47 B 6 35 B 7 94 B 8 5 B 9 35 B 10 77 B 11 9 B 12 52 B 13 73 B 1493 B 15 38 B 16 85 B 17 90 B 18 47 我的输出必须是 A 1 6 1 A 2 72 1 A 3 90 2 A 4 81 2 A 5 81 3 A 6 42 3 A 7 12 4 A 8 32 4 A 9 34 5 A 10 92 5 B 1 44 1 B 2 54 1 B 3 10 1 B 4 21 1 B 5 47 1 B 6 35 2 B 7 94 2 B 8 5 2 B 9 35 2 B 10 77 3 B 11 9 3 B 12 52 3 B 13 73 3 B 14 93 4 B 15 38 4 B 16 85 4 B 17 90 4 B 18 47 4 A 16 1 A 272 1 A 3902 A 4812 A 5813 A 6423 A 7124 A 8324 A 9 34 5 A 10925 B 144 1 B 2 54 1 B 3 10 1 B 4 21 1 B 5471 B 6 35 2 B 7942 B 8 5 2 B 9 35 2 B 1077 3 B 11 9 3 B 12 52 3 B 13 73 3 B 14934 B 15 38 4 B 16 85 4 B 1790 4 B 18 47 4 必须根据第一列中项目的长度来计算仓位(最后一列)。因此,对于每个箱子中的A=10/5=2 对于B,每个箱子中的18/5=3.6 我试着用seq bin=seq(from=,to=,by=)R 分成若干个垃圾箱,r,bins,R,Bins,我有以下数据 A 1 6 A 2 72 A 3 90 A 4 81 A 5 81 A 6 42 A 7 12 A 8 32 A 9 34 A 10 92 B 1 44 B 2 54 B 3 10 B 4 21 B 5 47 B 6 35 B 7 94 B 8 5 B 9 35 B 10 77 B 11 9 B 12 52 B
但不知道如何进行。任何帮助都将不胜感激。谢谢您可以按照的方法,使用
ave
为数据中的每个组应用函数
cbind(dat, bin=ave(dat$V2, dat$V1, FUN=function(x) ceiling(seq_along(x)/length(x)*5)))
# V1 V2 V3 bin
# 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
您可以按照中的方法,使用
ave
为数据中的每个组应用函数
cbind(dat, bin=ave(dat$V2, dat$V1, FUN=function(x) ceiling(seq_along(x)/length(x)*5)))
# V1 V2 V3 bin
# 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
我试过这个
split(df,df$Gene) -> gene
gene[1] -> g
as.data.frame(g) ->g1
FindBin = function(data){
START=0
END=length(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$基因)->基因
基因[1]>g
as.data.frame(g)->g1
FindBin=函数(数据){
开始=0
结束=长度(g1$A.Base)
努夫宾=20
跳转=结束/结束
bin=seq(from=START,to=END,by=jump)
g1$bin_index=findInterval(g1$A.Base,bin)
}
g1$m1bin=FindBin(g1)
现在,我去拿垃圾箱。。但是由于我已经将df分裂成不同的基因,如何在所有分裂的df上运行这个呢
split(df,df$Gene) -> gene
gene[1] -> g
as.data.frame(g) ->g1
FindBin = function(data){
START=0
END=length(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$基因)->基因
基因[1]>g
as.data.frame(g)->g1
FindBin=函数(数据){
开始=0
结束=长度(g1$A.Base)
努夫宾=20
跳转=结束/结束
bin=seq(from=START,to=END,by=jump)
g1$bin_index=findInterval(g1$A.Base,bin)
}
g1$m1bin=FindBin(g1)
现在,我去拿垃圾箱。。但是由于我已经将df分割成不同的基因,如何使用
数据在所有分割的df上运行此操作。表
:
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
使用
数据。表:
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
您需要为何时获取指定规则,例如3.6,为如何处理剩菜指定规则您需要为何时获取指定规则,例如3.6,为如何处理剩菜指定规则