2017-12-13 5 views
1

동일한 열의 헤더를 기반으로 부분 집합을 만들고 싶은 데이터 프레임에 하나의 열이 있습니다.열을 서브 세트하고 같은 열의 값을 기반으로 다음 n 개의 행을 선택하십시오.

df <- data.frame(col = c("Var: A", "1", "3", "5", "Var:B", "2", "4", "6", "7", "Var: C", "7", "1")) 

[df] 
     col 
1 Var: A 
2  1 
3  3 
4  5 
5 Var:B 
6  2 
7  4 
8  6 
9  7 
10 Var: C 
11  7 
12  1 

내가하고 싶은 것은 이것으로 끝내고, 서로 다른 '바르'제목에 따라이 열을 서브 세트입니다 :

[1] Var: A 
     1 
     3 
     5 
[2] Var: B 
     2 
     4 
     6 
     7 

를 마지막으로 저장하기 위해 그것은 본질적으로 다음과 같이 보입니다 그것들을 다른 변수들로

열의 특정 값 앞뒤에 n 개의 행을 선택하는 방법을 설명하는 예제를 살펴 봤지만 불행하게도 추출 할 변수의 대부분이 다른 길이이므로 작동하지 않습니다. 이것이 비교적 간단하게 할 수있는 방법이 있습니까?

+0

@Sotos 감사! 그것은 완벽하게 작동했습니다! – Bjorn

답변

2

당신은 Vars 및 분할을 찾을 수 grepl를 사용할 수있는, 즉

제공
split(df, cumsum(grepl('Var', df$col))) 

,

$`1` 
    col 
1 Var: A 
2  1 
3  3 
4  5 

$`2` 
    col 
5 Var:B 
6  2 
7  4 
8  6 
9  7 

$`3` 
     col 
10 Var: C 
11  7 
12  1 
관련 문제