在R中选择行

时间:2018-01-16 10:51:10

标签: r tidyr

编辑以进一步澄清要求 我在R中相当新,我在整理数据时遇到了障碍。

我目前的数据是这样的。

    Data
1   AAA TEXT Here
2   ZX
3   YX
4   ****
5   BBB Text Here
6   AL
7   TP
8   XY
9   ******
10 CCC Text Here
11 PP
12 QV
13 ******

AAA,BBB,CCC就像我的'标识符',而***表示与标识符相关的行的结尾。在此示例输出中,我只想提取BBB以及后面的3行。我需要选择中间行并将我的表转换为这样:

    Data
1   BBB Text Here
2   AL
3   TP
4   XY
你能帮帮忙吗?谢谢!

1 个答案:

答案 0 :(得分:0)

嗯。您的数据存储方法不是我们任何人推荐的方法,但如果您编写的内容确实是您存储数据的方式,那么您可以使用this answer中列出的方法查找行匹配的行号你指定的标识符。

# Set up test 'identifier' value
WantedIdentifier = "BBB Text Here"

# Get matching  row number 
RowNo = 
  which(Text == WantedIdentifier, arr.ind=TRUE)[1]

# Return from that row to the third beyond 
ReturnedText = 
  if(!is.na(RowNo)) data.frame(Data = Text[RowNo:(RowNo+3),]) else NA

# Value returned
> ReturnedText
           Data
1 BBB Text Here
2            AL
3            TP
4            XY

测试数据设置

Text= 
  read.table(text = "Data 
  'AAA TEXT Here'
  'ZX'
  'YX'
  '****'
  'BBB Text Here'
  'AL'
  'TP'
  'XY'
  '******'
  'CCC Text Here'
  'PP'
  'QV'
  '******'", header = TRUE, stringsAsFactors = FALSE)