我已经详尽地搜索了FIRST的直接翻译.最后.SAS DATA步骤中的指针但似乎无法找到一个.对于那些不熟悉SAS的人,FIRST.是一个布尔值,用于标识表和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
Run Code Online (Sandbox Code Playgroud)
因为SAS DATA逐行读取表,所以我可以使用如下语句:
IF FIRST.V1 THEN DO ...
Run Code Online (Sandbox Code Playgroud)
当且仅当这是第一次在V1中遇到观察时,FIRST.V1将返回TRUE.换句话说,它将为V1 [1](第一次出现'1'),V1 [5](第一次出现'2')和V1 [9](第一次出现'3')返回true ).最后.指针以类似的方式起作用,但具有该元素的最终外观.
R中有什么模仿这个吗?
Spa*_*man 22
您可以使用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
Run Code Online (Sandbox Code Playgroud)