【发布时间】:2017-10-26 23:40:58
【问题描述】:
我有一个称为类别的因子向量,有 47 个级别
Categories = as.factor(sort(make.unique(rep(letters, length.out = 47), sep='')))
[1] a a1 b b1 c c1 d d1 e e1 f f1 g g1 h h1 i i1 j j1 k k1 l l1 m m1 n n1 o o1 p p1 q q1 r r1 s s1 t
[40] t1 u u1 v w x y z
47 Levels: a a1 b b1 c c1 d d1 e e1 f f1 g g1 h h1 i i1 j j1 k k1 l l1 m m1 n n1 o o1 p p1 q q1 r r1 s s1 t t1 u u1 ... z
我有另一个称为 cat 的向量,其中有 9 个级别
cat = Categories[c(7,42,43,24,45,26,35,6,15)]
[1] d u1 v l1 x m1 r c1 h
47 Levels: a a1 b b1 c c1 d d1 e e1 f f1 g g1 h h1 i i1 j j1 k k1 l l1 m m1 n n1 o o1 p p1 q q1 r r1 s s1 t t1 u u1 ... z
我还有一个包含 36 行的数据框 My_Data。数据框中的一列多次出现来自 cat 的值
My_Data = data.frame(name = make.unique(rep(c(1:10,LETTERS), length.out = 36), sep=''), cat = sample(rep(cat,4),36,replace = FALSE), position = 0)
name cat position
1 1 v 0
2 2 r 0
3 3 h 0
4 4 m1 0
5 5 h 0
6 6 u1 0
7 7 l1 0
8 8 h 0
9 9 u1 0
10 10 x 0
11 A x 0
12 B v 0
13 C d 0
14 D c1 0
15 E r 0
16 F v 0
17 G l1 0
18 H d 0
19 I l1 0
20 J c1 0
21 K u1 0
22 L x 0
23 M v 0
24 N d 0
25 O l1 0
26 P m1 0
27 Q r 0
28 R m1 0
29 S h 0
30 T m1 0
31 U c1 0
32 V d 0
33 W r 0
34 X x 0
35 Y c1 0
36 Z u1 0
使用下面的代码,我可以填充上面给出的位置列,以反映值在 cat 列中的出现次数:
transform(My_Data, position = ave(as.character(cat), cat, FUN = seq_along))
数据框 My_Data 的前 15 行如下所示:
name cat position
1 1 v 1
2 2 r 1
3 3 h 1
4 4 m1 1
5 5 h 2
6 6 u1 1
7 7 l1 1
8 8 h 3
9 9 u1 2
10 10 x 1
11 A x 2
12 B v 2
13 C d 1
14 D c1 1
15 E r 2
现在我想计算最小值。和最大。 cat 列的相同值的任意 2 次连续出现之间的干预项数。
我该怎么做?
【问题讨论】: