2013-02-26 4 views
1

현재 인덱스 범위를 기반으로 데이터 집합 (df_2)의 행을 자르기 위해이 루프가 있으며, 포함될 섹션의 시작 및 끝 인덱스가 사용됩니다 df_3에 2 열을 추가하고 새 파일 (df)을 만듭니다.조건부로 2 열의 값 범위를 기반으로 데이터 프레임 열을 채우십시오.

for(i in 1:nrow(df_3)){ 
    if (i==1) df <- df_2[df_3$start[i]:df_3$end[i],] 
    else df <- rbind(df,df_2[df_3$start[i]:df_3$endi],]) 
} 

각 섹션에는 df_3의 3 열에 포함 된 값이 있습니다. 해당 섹션과 관련된 값을 반복하는 df에 새 열을 만들고 싶습니다.

약간의 도움을 주시면 감사하겠습니다. 명확히 해두시겠습니까? 내가 할 수있는 것처럼 간결했습니다.

Joran에 의해 제안 - 여기에 몇 가지 예

DF

index new_column 
0  
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 

DF_3 있습니다

start _end new_column_values 

0  3  1 
4  6  2 
7  10 3 
+1

샘플 데이터를 추가해야합니다. –

+0

미안하지만 아직 명확하지 않습니다. 당신이하려고하는 것을 더 잘 설명해야합니다. 'DF_2' 란 무엇입니까? 'new_column'이'DF'에서 비어있는 이유는 무엇입니까? 등 ... – Arun

+0

괜찮 - 그래서 df_2 내 원래 unedited 데이터 프레임입니다. df3의 시작과 끝 값을 조건으로하는 루프에서 편집 된 프레임 (df)을 생성합니다. 새 열은 비어 있고 (문제가 아닌) 생성해야하며 df_3 $ start 및 df_3 $ end에있는 범위 값에 따라 df_3 $ new_column_values의 값으로 채 웁니다. 도움이 되나요 ?? –

답변

0

내가 제대로 질문을 이해한다면, 당신은 다음과 같이 cut을 사용할 수 있습니다 :

DF$new_column <- cut(DF$index, 
        breaks = c(DF_3$start[1], DF_3$end), 
        include.lowest = TRUE, 
        labels = DF_3$new_column_values) 
DF 
    index new_column 
1  0   1 
2  1   1 
3  2   1 
4  3   1 
5  4   2 
6  5   2 
7  6   2 
8  7   3 
9  8   3 
10  9   3 
11 10   3 

여기에서는 사용 가능한 정보를 사용하려고합니다. 우리는 기본적으로 DF$index에 대한 요인을 만들고 요인 수준은 또 다른 범위 인 data.frame에 의해 결정됩니다. 따라서 cut의 경우 breaks을 첫 번째 시작 값과 모든 끝 값으로 구성된 벡터로 설정하고 "labels"을 "new_column_values"변수의 값으로 설정했습니다.

결과 "new_column"은 (현재 양식에서) 숫자 변수가 아니라 요소임을 유의하십시오.

+0

이것은 잘 작동했습니다 - 감사합니다! –

관련 문제