r-如何查找data.frame中元素的第一次和最后一次出现



我已经详尽地搜索了FIRST的直接R翻译。和LAST。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步骤逐行读取表格,所以我可以使用这样的语句:

IF FIRST.V1 THEN DO ...

如果且仅当这是第一次在V1中遇到观测值时,FIRST.V1将返回TRUE。换句话说,对于V1[1]("1"的首次出现)、V1[5]("2"的首次亮相)和V1[9]("3"的首次露面),它将返回true。最后。指针以类似的方式起作用,但具有该元素的最终外观。

R中是否有类似的内容?

您可以使用duplicate和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

最新更新