首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中的动态循环

R中的动态循环
EN

Stack Overflow用户
提问于 2016-04-26 23:01:20
回答 1查看 797关注 0票数 0

我有一个向量x:

代码语言:javascript
复制
x<-rpois(16,lambda=10)

和一个名为u3的查找表:

代码语言:javascript
复制
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如下:

代码语言:javascript
复制
   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数据帧。

如下所示:

代码语言:javascript
复制
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动态查找查找表并写入它的计数。我想要这样一个理想的输出

代码语言:javascript
复制
   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

谢谢

EN

回答 1

Stack Overflow用户

发布于 2016-04-26 23:37:17

使用set.seed(0)

代码语言:javascript
复制
 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 )

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36868711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档