[问题] 有点小复杂的字串计数

楼主: eco100 ( )   2017-06-28 23:55:37
我问题是这样的
我有如下的字串 基本上是 A B C D E F G 这七个字母的组合
白色的字体不是我想要计数的范围 所以不管是x或这七个字母 都不重要
黄色字体 才是我想要计数的长度 也就是每组字串的后面七个
位置是指字串的位置 原谅我10后面数字会黏一块 我就不打了
长度指的就是字串的长度
位置
长度 1 2 3 4 5 6 7 8 9 ....... 29
9 B A G F F A B F C
9 B A G F F A B F C
13 x x x F A A B C C G B B F
13 x x x F A A B F C G F B F
15 x x x x G B B F C G F E E B A
15 x x x x G B B F G G F E E B A
25 x x x x x x x x x x x x E E B A C A E E G F G A A
29 x x x x x x x x x x x x x x x x x x G F G F A A C D A B G
29 x x x x x x x x x x x x x x x x x x G F G F A C C D A B G
相同的长度为一组字串 我想要计算同一组的计数
例如长度9的 我想要得到如下的结果:
-1 ~ -7 表示从后面倒数过来的位置
-7 -6 -5 -4 -3 -2 -1
A 1
B 1/2
C 1/3
D
E
F 1 1 1
G 1
原则就是同一组长度 重复出现的字母 算一次就好
所以长度9虽然有两条字串 在-7这位置都是G 但是G只要算一次
另一个重点就是那个1/2的算法,
因为B这个字母除了是长度9的-3这位置外
同时也是长度13这组 -7 的位置
所以B的次算 要分给两组 各为0.5次 其他没出现的就为0
以此类推 我再列一下长度15会有的结果:
-7 -6 -5 -4 -3 -2 -1
A 1
B 1
C 1/3
D
E 1 1
F 1
G 1 1/2
C这个字母同时出现在长度9、长度13、长度15 所以次数是1/3
分别是长度9的-1 长度13的-5 长度15的-7
所以我其实就是想要每一组长度字串的这个计数结果
这样举例不知是否清楚 @@
我想了一天 还是不知道有什么具体的写法
谢谢各位指教
作者: x88776544pc   2017-06-29 00:22:00
如果把资料补齐成 k x 29 的矩阵,用 length 跟 data[,i] 作成的 table 就可以看出第 i 行下某类在不同长度下出现的次数
作者: clsmbstu   2017-06-29 00:42:00
好像没这么简单 它的原点会随资料长度移动 @@以data[,4]来说,只有data[1:2,4]有意义data[,7]里B在各种长度都出现两次 可是这不是原PO要的
作者: x88776544pc   2017-06-29 06:37:00
sum(table(length,data[,i])[,data[,i][jth]]!=0)算第j列的类别在第i行出现次数不为零的个数就可以了

Links booklink

Contact Us: admin [ a t ] ucptt.com