楼主: 菩提镜
713 2

[问答] 求教:游程定位问题 [推广有奖]

  • 2关注
  • 0粉丝

博士生

34%

还不是VIP/贵宾

-

威望
0
论坛币
5 个
通用积分
31.3330
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
31819 点
帖子
28
精华
0
在线时间
497 小时
注册时间
2012-1-13
最后登录
2024-10-11

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

数据框: aa=data.frame(数值=c(50,110,120,110,105,101,103,30,40,101,102,110),字符=c(rep("a",2),rep("b",2),rep("a",3),"b",rep("a",4) ))


求: 返回连续3个及以上的"a"且数值大于100的最后一个符合条件的行号.即本例的第7行和12行.





二维码

扫码加我 拉你入群

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

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

关键词:Frame Data 最后一个 Fram RAM

  1. for (i in 3:length(aa$数值)) {
  2.   if (all(aa$数值[(i-2) : i] > 100) &&
  3.       all(aa$字符[(i-2) : i] == "a") &&
  4.       any(c(i == length(aa$数值),
  5.             aa$数值[i+1] <= 100,
  6.             aa$字符[i+1] != "a")))
  7.     print(i)
  8. }
复制代码

使用道具

藤椅
owenqi 在职认证  学生认证  发表于 2021-4-6 09:40:14 |只看作者 |坛友微信交流群
这样应该可以,可能会有一些bug,你可以设其他的条件去测试。
  1. aa <- data.frame(val=c(50,110,120,110,105,101,103,30,40,101,102,110),
  2.               char=c(rep("a",2),rep("b",2),rep("a",3),"b",rep("a",4)))

  3. char_idx <- function(df){
  4.   
  5.   char_info <- rle(df$char)
  6.   char_encode <- which(char_info$values == 'a')
  7.   char_length <- which(char_info$lengths >= 3)
  8.   val_info <- which(df$val > 100)
  9.   
  10.   cum_idx <- cumsum(char_info$lengths)
  11.   idx <- intersect(intersect(char_encode, char_length), val_info)
  12.   cum_idx[idx]
  13. }
复制代码

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-11-6 07:16