楼主: 苏谷壳
3850 10

[问答] R语言如何从序列中找到最后一个开始大于某个值的数的下标 [推广有奖]

  • 1关注
  • 0粉丝

本科生

70%

还不是VIP/贵宾

-

威望
0
论坛币
23 个
通用积分
3.7941
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1151 点
帖子
63
精华
0
在线时间
85 小时
注册时间
2016-1-3
最后登录
2021-6-29

楼主
苏谷壳 发表于 2017-8-1 16:40:07 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
希望求得data1_2(见附件)中最后一个开始大于120的数的下标
请问实现上面的功能的命令该怎么写呢,在线等谢啦!!☆⌒(*^-゜)v
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:最后一个 R语言 Data 大于1 在线等

Rplot.png (2.61 KB)

Rplot.png

data1_2.txt
下载链接: https://bbs.pinggu.org/a-2297716.html

67.64 KB

回帖推荐

糯米JI 发表于9楼  查看完整内容

允许用for循环的话,你看这样行不行 for(i in 1:nrow(data)){if(data$x

jinfreak1992 发表于8楼  查看完整内容

which(data1_2==BLUE) outputs the index positions of all vector values equal to BLUE so goal= max(which( data1_2 == BLUE)) + 1 print(data1_2[goal])-------- BLUE = 6 in that example

沙发
苏谷壳 发表于 2017-8-1 16:41:41
最后一个开始大于120的位置,就是蓝线与黑线交叉的最后一个点,就是求这个点的下标

藤椅
jinfreak1992 发表于 2017-8-1 16:55:38
assuming data=data.frame(col1= index, col2= data1_2)

blue line number = B

data2= data $ col1[data $ col2= B]         or         data2 = data[ ,1] [data[ , 2] = B ]  #should have two points

head(data2)
max(data2[,1])





or the easiest way in just one line is





板凳
苏谷壳 发表于 2017-8-1 17:00:54
jinfreak1992 发表于 2017-8-1 16:55
assuming data=data.frame(col1= index, col2= data1_2)

blue line number = B
乱码了,能在重新发一次吗谢谢啦,

报纸
jinfreak1992 发表于 2017-8-1 17:22:56
too annoying to use special symbols so will only use numeric index.

If the data1_2 is a vector, easiest is

BLUE = 120

max(which( data1_2 == BLUE ) )

Otherwise as the original method, if the index is different from default.

BLUE = 120

data = data.frame( index, data1_2)

data2 = data[ which( data1_2 == BLUE), 1]

max(data2)

地板
苏谷壳 发表于 2017-8-1 17:27:54
jinfreak1992 发表于 2017-8-1 17:22
too annoying to use special symbols so will only use numeric index.

If the data1_2 is a vector, e ...
假设我这里有一列数据,波动很大,想找到最后一个开始大于某个值的数所对应的下标,该怎么做呢?
如x<-c(6,12,15,16,89,54,56,21,48,49,58,32,10,0,2,3,4,8,9,6,4,5,1,2,3,5,6,89,98,100,152,153),该数据中出现了三次6,最后一个大于6的数为89,对应的下标为28。

7
苏谷壳 发表于 2017-8-1 17:30:23
jinfreak1992 发表于 2017-8-1 17:22
too annoying to use special symbols so will only use numeric index.

If the data1_2 is a vector, e ...
我想要的并不是最大值

8
jinfreak1992 发表于 2017-8-2 12:13:07
which(data1_2==BLUE) outputs the index positions of all vector values equal to BLUE

so

goal= max(which( data1_2 == BLUE)) + 1

print(data1_2[goal])--------
BLUE = 6   in that example



9
糯米JI 发表于 2017-8-3 13:50:30
允许用for循环的话,你看这样行不行
for(i in 1:nrow(data)){if(data$x<=120) n=i}
n+1

10
BG4IMP 发表于 2017-8-4 09:47:36 来自手机
苏谷壳 发表于 2017-8-1 16:40
希望求得data1_2(见附件)中最后一个开始大于120的数的下标
请问实现上面的功能的命令该怎么写呢,在线等谢 ...
先说下思路。手机上看,写代码不易。
如果你的蓝线是120水平,且求过此点且上升的,则该函数的导数为正值。
计算导数为正且函数值等于120(或接近)的所有点,反查其下标即为所求

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 22:46