有没有人知道什么是最好的R替代SAS首先。还是最后一个操作员?我没有找到。
SAS有第一个。以及最后一个自动变量,其标识具有特定变量的相同值的组中的第一个和最后一个记录;所以在下面的数据集中定义了FIRST.model和LAST.model:
Model,SaleID,First.Model,Last.Model
Explorer,1,1,0
Explorer,2,0,0
Explorer,3,0,0
Explorer,4,0,1
Civic,5,1,0
Civic,6,0,0
Civic,7,0,1
字符串
6条答案
按热度按时间okxuctiv1#
听起来像是在寻找
!duplicated
,其中fromLast
参数是FALSE
或TRUE
。字符串
这个函数有一些警告和边缘情况行为,您可以通过帮助文件(
?duplicated
)找到。dzhpxtsq2#
更新(先读)
如果您真的只对行索引感兴趣,也许直接使用
split
和range
会有用。下面假设数据集中的行名是按顺序编号的,但也可能进行调整。字符串
如果使用命名行,一般的方法是相同的,但您必须自己指定范围。下面是一般模式:
型
初始答案(已编辑)
如果您对提取行而不是将行号用于其他目的感兴趣,那么还可以研究
data.table
。以下是一些例子:型
最后一种方法非常方便。例如,如果你想要每个组的前三行和后三行,你可以用途:
DT[, .SD[c(1:3, (.N-2):.N)], by=Species]
(仅供参考:.N
表示每组病例数。其他有用的办法包括:
型
bkhjykvo3#
带有n=1选项的head和tail函数与by相结合是一种很好的方法。参见R for SAS and SPss Users**(Robert Muenchen)使用感兴趣的变量(即last)创建一个 Dataframe 。
字符串
bxpogfeg4#
下面是一个dplyr解决方案:
字符串
PS:如果你没有安装dplyr,运行:
型
ao218c7q5#
下面的函数基于@Joe对First / Last的描述。
该函数返回向量列表。
每个列表条目对应于dataframe的列(即数据集的特征或变量)
然后,在给定的列表条目中,存在与每个观察类别的第一个(或最后一个)元素有关的索引。
示例用法:
字符串
data(iris)
使用示例型
每个物种的观察结果:
型
为sepcies的每个第一个观察抓取整行
型
CODE FOR FUNCTION findFirstLast():
型
7kjnsjlb6#
你可以试试这个函数,它可以创建第一个和最后一个标志,并像sas一样处理
NA
。R
dplyr::arrange
:对于本地数据,NA总是排序到末尾,即使使用dplyr::desc() Package 也是如此。SAS
PROC SORT
:数值变量的缺失值小于所有数字。字符变量的缺失值小于任何可打印的字符值。该函数用于对数据进行排序,如SAS,缺失值最小,并为每个排序变量创建变量first和last。
字符串
创建于2023-07-19,使用reprex v2.0.2