2016-01-08 59 views
-3

我上[R规划项目工作的下一行..获取R A数据帧编程

我有一个数据帧(DF)与约790观察。我正在试图从某些行数据帧。

  • 1猫
  • 2帽
  • 3 S_NAME
  • 4锡
  • 5罪
  • :与该行我想以上的行提取,这是所有命名S_NAME唯一的相似
  • 6 S_NAME
  • 7 FOO
  • 8罪
  • 9 S_NAME
  • 10 TINN
  • 因此,例如,我会想提取行4,7和10,都遵循S_NAME

    我不确定如何做到这一点,任何帮助将是巨大的感谢。我知道我已经标记了Python,尽管这段代码可能会帮助我理解。

    回答

    2

    我想试试这个:

    ktore <- which(df[, 2]=="S_NAME") # check in which row there is S_NAME 
    df[ktore+1, ] # extract rows which are after them 
    
    4 4 tin 
    7 7 foo 
    10 10 tinn 
    
    +0

    嗨,我将如何获得所有行中介s_name请?谢谢@marta – tony

    2

    你的意思是这样吗?

    df <- data.frame(a=1:10, b=c("cat", "hat", "S_NAME", "fred", "joe", "S_NAME", "bob", "jeff", "S_NAME", "final")) 
    print(df) 
    df[which(df$b == "S_NAME")+1, ] 
    
    # to extract rows inbetween rows containing S_NAME: 
    S_NAME.inds <- which(df$b == "S_NAME") 
    rows <- 1:nrow(df) 
    df[df$b != "S_NAME" & rows > S_NAME.inds[1] & rows < S_NAME.inds[S_NAME.nums], ] 
    
    +0

    我该如何解决S_NAME间的所有问题。谢谢 – tony

    +0

    您是指不是S_NAME的行或S_NAME之间的行(即排除第一个S_NAME之前和最后一个S_NAME之后的行)? – doctorG

    +0

    是第一个S_NAME与第二个S_NAME之间的第二行,然后是第二个S_NAME与第三个S_NAME之间的行。谢谢 – tony