17

FIRST の直接的な R 翻訳を徹底的に検索しました。そして最後。SAS DATAステップのポインターですが、見つからないようです。SAS に慣れていない方は、まず。テーブル内の特定の要素の最初の出現と LAST を識別するブール値です。最後の出現を識別するブール値です。たとえば、次の並べ替えられたテーブルを考えてみましょう。

V1    V2    V3
1     1     1
1     1     2
1     2     3
1     2     4
2     3     5
2     3     6
2     4     7
2     4     8
3     5     9
3     5     10
3     6     11
3     6     12

SAS DATA ステップはテーブルを 1 行ずつ読み取るため、次のようなステートメントを使用できます。

IF FIRST.V1 THEN DO ...

FIRST.V1 は、観測が V1 で初めて検出された場合にのみ TRUE を返します。つまり、V1[1] ('1' の最初の出現)、V1[5] ('2' の最初の出現)、および V1[9] ('3' の最初の出現) に対して true を返します。 )。最後。ポインターは同様の方法で機能しますが、その要素の最終的な外観を伴います。

これをエミュレートするRには何かありますか?

4

1 に答える 1

24

duplicated と rev (LAST の場合) を使用してこれを行うことができます。

> v1=c(1,1,1,2,2,3,3,3,3,4,4,5)

> data.frame(v1,FIRST=!duplicated(v1),LAST=rev(!duplicated(rev(v1))))
   v1 FIRST  LAST
1   1  TRUE FALSE
2   1 FALSE FALSE
3   1 FALSE  TRUE
4   2  TRUE FALSE
5   2 FALSE  TRUE
6   3  TRUE FALSE
7   3 FALSE FALSE
8   3 FALSE FALSE
9   3 FALSE  TRUE
10  4  TRUE FALSE
11  4 FALSE  TRUE
12  5  TRUE  TRUE
于 2012-07-18T17:14:47.453 に答える