我有一个向量x:
x<-rpois(16,lambda=10)和一个名为u3的查找表:
minx<-min(x)
maxx<-max(x)
dg<-maxx-minx
k<-5
sa<-ceiling(dg/k)
u1=data.frame(seq(minx,maxx,sa))
colnames(u1)<-"x"
u2<-NULL
for (i in 1:k)
{
u2[i]<-u1[i,] + sa-1
}
u2<-as.data.frame(u2)
colnames(u2)<-"y"
u3<-cbind(u1,u2)
for(i in 1:nrow(u2))
{
u3$range[i]<-paste(u1[i,],u2[i,],sep="-")
}
print(u3)我的u3 data.frame如下:
x y range
1 3 5 3-5
2 6 8 6-8
3 9 11 9-11
4 12 14 12-14
5 15 17 15-17我想在这里做一个计算:我想让每个x向量在列1,2中查找u3数据帧变量,然后如果条件为真,那么如果x值在范围内,则对u3数据帧范围内的x值进行计数,并将计数作为新列写入u3数据帧。
如下所示:
count=0
for(i in 1:length(x))
{
for(j in 1:nrow(u3))
{
u3$count[j]<-if(x[i]>=u3[j,1] & x[i]<=u3[j,2]) {count=count + 1}
}
}但我来不了了。
你对此有什么想法吗?我该如何处理这样的问题呢?我不知道如何告诉R动态查找查找表并写入它的计数。我想要这样一个理想的输出
x y range count
1 3 5 3-5 2
2 6 8 6-8 5
3 9 11 9-11 1
4 12 14 12-14 4
5 15 17 15-17 3谢谢
发布于 2016-04-26 23:37:17
使用set.seed(0)
x
[1] 13 8 14 14 11 14 12 11 9 14 11 8 2 8 10 7
u3
x y range
1 2 4 2-4
2 5 7 5-7
3 8 10 8-10
4 11 13 11-13
5 14 16 14-16
cbind(u3,data.frame(table(findInterval(x,u3$x))))
x y range Var1 Freq
1 2 4 2-4 1 1
2 5 7 5-7 2 1
3 8 10 8-10 3 5
4 11 13 11-13 4 5
5 14 16 14-16 5 4请记住,我使用findInterval(x,u3$x)它只适用于您的示例,因为您的分组是(x,y] ie (包含x,不包含y )
https://stackoverflow.com/questions/36868711
复制相似问题