r - 获取新值开始的行索引

标签 r

我有一个简单的 data.frame,如下所示。我想获取新 origin 开始的所有行索引。在这种情况下,它将是 1、5 和 8。有没有一种方法可以在不循环的情况下执行此操作?

df <- data.frame(origin=c(rep('2016-01-01', 4), rep('2016-02-01',3), rep('2016-03-01',2)), 
  date=c('2016-01-01','2016-02-01','2016-03-01','2016-04-01','2016-02-01','2016-03-01','2016-04-01','2016-03-01','2016-04-01'),
  val=rnorm(9))

df$date <- as.Date(df$date)
df$origin <- as.Date(df$origin)

df
      origin       date        val
1 2016-01-01 2016-01-01 -2.0856573
2 2016-01-01 2016-02-01 -0.5930160
3 2016-01-01 2016-03-01  0.5370460
4 2016-01-01 2016-04-01  1.5539720
5 2016-02-01 2016-02-01  0.4866211
6 2016-02-01 2016-03-01 -0.1443780
7 2016-02-01 2016-04-01 -0.9286197
8 2016-03-01 2016-03-01 -0.6311255
9 2016-03-01 2016-04-01  1.1667005

最佳答案

which(!duplicated(df$origin))
#[1] 1 5 8

如果值可以重复(或未排序),请使用以下内容查找一系列新值的开始位置。

which(c(TRUE, as.character(df$origin)[-NROW(df)] != as.character(df$origin)[-1]))
#[1] 1 5 8

关于r - 获取新值开始的行索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43287394/

相关文章:

r - 在一次通话中使用 .N 和 .SD

r - 根据 R 中的第一列对矩阵进行排序

r - 使用 R 将表写入文件会导致不需要的行名称列

r - 将数据框列设置为 R data.frame 对象的索引

r - 在 r 中的向量边界处填充 NA

python - 尝试使用 rpy2 将 pandas 数据帧转换为 R 的数据帧时出现无符号整数错误

r - ggplot : Scatter plot, 标签和图例

r - 如何在 R 中对季度数据进行去季节化?

python - 使用 R 或 Python 将数据框列中的字符串与另一个数据框列中的字符串匹配

r - R 中的长到宽多个变量