r - 找到数据框中变量更改其值的位置
问题描述
我在 R 中有很多数据框,看起来像这样:
A B
1 0
2 0
3 0
4 1
5 1
6 1
因此,在 3 到 4 之间,B 将值从 0 更改为 1。R
返回A
whereB
更改值的值的最常用方法是什么?
在数据B
中仅更改一次值,并A
进行排序(从 1 到 n)。
解决方案
这是一种可能的方法。用于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
推荐阅读
- azure - 使用微软翻译器发出 POST 请求
- python - python中的字谜字符串
- python - 如何比较整个df的diff列的行值并获取最新记录?
- python - 如何摆脱 IndexError: string index out of range in loops?
- sql-server - 具有多个条件的表连接
- amazon-web-services - 如何使用基于列表的 AWS CLI 下载文件?
- php - 我无法在 mac OS + VS Code + MAMP 上启动 xdebug
- windows - 崩溃后如何自动删除驱动程序?
- react-native - 使用tipsi-stripe在React Native应用程序上实现ApplePay和GPay时出错
- javascript - Javascript:如何在动态添加的元素上定位 lightgallery.js