楼主: 13636896869
2201 2

[有偿编程] 统计0在每两个非0数之间出现的数量 [推广有奖]

  • 0关注
  • 0粉丝

本科生

6%

还不是VIP/贵宾

-

威望
0
论坛币
272 个
通用积分
1.2000
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
220 点
帖子
16
精华
0
在线时间
118 小时
注册时间
2016-9-15
最后登录
2024-12-4

楼主
13636896869 发表于 2018-7-28 13:01:41 |AI写论文
50论坛币
问题如下:
如果:  

现在一个dataframe(假设如下):   

1 2 0 3 5 0 0 2 1
0 7 9 0 5 7 2 0 0
0 0 0 0 1 2 4 3 7
0 0 0 7 0 0 0 0 0
按纵列统计 每两个非0 数字之间出现的0 的个数 在总表中有多少次

例如: 第一列3个0 ;第二列2个0; 第三列 1个0 和2个0; 第4列2个0 ;第5列1个0 ;第6列1个0 和1个0 ;第7列1个0 和1个0 ;第8列1个0 和1个0 ;第9列1个0 和1个0
现在 :间隔0是1个的次数:10
           间隔0是2个的次数:3
           间隔0是3个的次数:1

求各位帮忙

最佳答案

jalonso 查看完整内容

用C写的改的R,据说r中for循环效率低,LZ自己斟酌吧运行了一次,不保证没有bug
关键词:Dataframe Frame Data Fram FRA R语言 统计

沙发
jalonso 发表于 2018-7-28 13:01:42
用C写的改的R,据说r中for循环效率低,LZ自己斟酌吧运行了一次,不保证没有bug
  1. function(find0){
  2.   data<-matrix(c(1,2,0,3,5,0,0,2,1,0,7,9,0,5,7,2,0,0,0,0,0,0,1,2,4,3,7,0,0,0,7,0,0,0,0,0),nrow=4,byrow = T)
  3.   n01<-0
  4.   n02<-0
  5.   n03<-0
  6.   temp<-0 #0值索引
  7.   index<-1 #是否是第一个非0值的标志位
  8.   for(i in 1:dim(data)[2]){
  9.     for(j in 1:dim(data)[1]){
  10.       if(data[j,i]!=0){
  11.         if(index==1){
  12.           index=0
  13.           next
  14.         }
  15.         else{
  16.           if(temp==1) n01<-n01+1
  17.           else if(temp==2) n02<-n02+1
  18.           else if(temp==3) n03<-n03+1
  19.           temp=0
  20.         }
  21.       }
  22.       else{
  23.         if(j==1){index=0}
  24.         temp<-temp+1
  25.         if(j==dim(data)[1]){
  26.           if(temp==1) n01<-n01+1
  27.           else if(temp==2) n02<-n02+1
  28.           else if(temp==3) n03<-n03+1
  29.           }
  30.       }
  31.     }
  32.     temp=0
  33.     index=1
  34.   }
  35.   print(n01)
  36.   print(n02)
  37.   print(n03)

  38. }
复制代码


藤椅
13636896869 发表于 2018-7-28 13:02:01
拜托了各位,非常急!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 18:59