请选择 进入手机版 | 继续访问电脑版
楼主: 不二不幸福
1204 1

[问答] 输出某列值相同首行和尾行 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

32%

还不是VIP/贵宾

-

威望
0
论坛币
181 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1591 点
帖子
76
精华
0
在线时间
159 小时
注册时间
2017-9-26
最后登录
2022-3-30

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
文件格式如下,第2、3列值相同:
ChrStartEndflag
chr1

631933

631933

2

chr1

631969

631969

2

chr1

631979

631979

2

chr1

631996

631996

2

chr1

632011

632011

2

chr1

632023

632023

2

chr1

634024

634024

3

chr1

634028

634028

3

chr1

634047

634047

3

chr2

779068

779068

10

chr2

779076

779076

10

chr2

779097

779097

10

chr2

779101

779101

10

chr2

779111

779111

10

在第一列和第四列值相同的情况下,输出第2列的第一行和最后一行,如上述数据的结果应该是
ChrStartEnd
chr1

631933

632023

chr1

634024

634047

chr2

779068

779111



请问一下除了一行一行地循环之外,有没有别的更简洁一点的方法?
二维码

扫码加我 拉你入群

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

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

关键词:文件格式 有没有

回帖推荐

xc2156 发表于2楼  查看完整内容

假设你的data frame叫aa 方法一:用dplyr 方法二:用sqldf
xc2156 发表于 2018-12-13 14:54:45 |显示全部楼层 |坛友微信交流群
假设你的data frame叫aa

方法一:用dplyr
  1. library(dplyr)
  2. aa %>%
  3.     group_by(Chr, flag) %>%
  4.     summarize(Start = min(Start),
  5.               End = max(Start)) %>%
  6.     select(-flag) %>%
  7.     as.data.frame()
复制代码


方法二:用sqldf
  1. library(sqldf)
  2. sqldf("select Chr, min(Start) Start, max(Start) End
  3.       from aa
  4.       group by Chr, flag
  5.       order by 1, 2")
复制代码
已有 2 人评分论坛币 学术水平 热心指数 收起 理由
cheetahfly + 20 + 1 精彩帖子
不二不幸福 + 1 + 1 + 1 精彩帖子

总评分: 论坛币 + 21  学术水平 + 2  热心指数 + 1   查看全部评分

使用道具

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

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

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

GMT+8, 2024-3-29 20:46