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

标签 r dataframe sas

我已经详尽地搜索了 FIRST 的直接 R 翻译。最后。 SAS DATA 步骤中的指针,但似乎找不到。对于那些不熟悉 SAS 的人,首先。是一个 bool 值,用于标识给定元素在表中的第一次出现和最后一次出现。是一个 bool 值,用于标识最后一次出现。例如,考虑以下排序表:

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 模仿这个?

最佳答案

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

关于r - 如何在 data.frame 中找到元素的第一次和最后一次出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11546684/

相关文章:

r - 无法在 Ubuntu 18.04 上的 R Studio Server 中安装 aws.s3 包 - 权限被拒绝?

r - 如何在 fread 中指定变量文件名

r - 替换 R 中所有列名称中的多个句点

scala - Apache Spark,将 “CASE WHEN … ELSE …”计算列添加到现有DataFrame中

sas - 在SAS中单独解析标题行

sas - 在SAS中将两个大数相加时,为什么结果毫无意义?

r - 如何在分配类似于 r 中的括号 (x<-27) 技巧后在新行上打印变量

r - 使用并行包将具有不同参数的函数调用发送到 R 中的不同处理器

r - 在数据帧中按行添加列总和

SAS PROC PRINT 对我来说真的很慢,有什么想法吗?