查找列中的更改索引

Jon*_*Lee 5 r

有没有办法在R列中找到因子变化指数?例如:

x <- c("aaa", "aaa", "aaa", "bbb", "bbb", "ccc", "ddd")
Run Code Online (Sandbox Code Playgroud)

将返回3,5,6

Dav*_*urg 9

您可以尝试比较移位的矢量,例如

which(x[-1] != x[-length(x)])
## [1] 3 5 6
Run Code Online (Sandbox Code Playgroud)

这将适用于角色因素


Pie*_*une 5

which(!!diff(as.numeric(x)))
[1] 3 5 6
Run Code Online (Sandbox Code Playgroud)

假设您确实有因素。它们与数字值一起在内部保存。因此,当采取差异时,每次更改都会产生一个差异。第二个强制因素是零被认为是FALSE,其他数字被认为是TRUE。which定位TRUE值(也称为非零)。

  • 我真的像这样! (4认同)
  • 代码查询。没有人有时间进行所有的打字:) (2认同)

Mat*_*erg 5

rle可以用于此:

head(cumsum(rle(x)$lengths), -1)
[1] 3 5 6
Run Code Online (Sandbox Code Playgroud)