首页 > 解决方案 > 找到数据框中变量更改其值的位置

问题描述

我在 R 中有很多数据框,看起来像这样:

A   B
1   0
2   0
3   0
4   1
5   1
6   1   

因此,在 3 到 4 之间,B 将值从 0 更改为 1。R返回AwhereB更改值的值的最常用方法是什么?

在数据B中仅更改一次值,并A进行排序(从 1 到 n)。

标签: r

解决方案


这是一种可能的方法。用于diff获取列b更改的值,但请注意,b根据更改的定义, 的第一个值没有更改。(问题是diff返回一个少一个元素的向量。)

inx <- c(FALSE, diff(data$b) != 0)
data[inx, ]
#  a b
#4 4 1

在看到OP对另一篇帖子的评论后,以下代码显示此方法也可以解决b以任何值开头的问题,而不仅仅是零。

data2 <- data.frame(a=c(1,2,3,4,5,6),b=c(1,1,1,0,0,0))
inx <- c(FALSE, diff(data2$b) != 0)
data2[inx, ]
#  a b
#4 4 0

推荐阅读