2017-01-12 1 views
0

에 변수의 분할 레벨 I (12 명) 관찰 및 3 개 변수이 안양에서 R : 두 변수

df <- read.table(text = c(" 
SiteID scenario value 
site1 measured_raw21 55 
          site1 measured_raw22 60 
          site1 simulated_raw21 54 
          site1 simulated_raw22 59 
          site1 measured_adj21 23 
          site1 measured_adj22 27 
          site1 simulated_adj21 22 
          site1 simulated_adj22 28 
          site1 meaured_0.5 40 
          site1 meaured_0.8 55 
          site1 simulated_0.5 40 
          site1 simulated_0.8 57"), header =T) 

이있는 data.frame, 나는 두 개의 열로 scenario의 수준을 분할 할이

> df 
    SiteID  scenario value 
1 site1 measured_raw21 55 
2 site1 measured_raw22 60 
3 site1 simulated_raw21 54 
4 site1 simulated_raw22 59 
5 site1 measured_adj21 23 
6 site1 measured_adj22 27 
7 site1 simulated_adj21 22 
8 site1 simulated_adj22 28 
9 site1  meaured_0.5 40 
10 site1  meaured_0.8 55 
11 site1 simulated_0.5 40 
12 site1 simulated_0.8 57 

출력은 어떤 제안이 어떻게 R에서이 작업을 수행하기 위해이

SiteID scenario scenario1 value 
site1 measured raw21  55 
site1 measured raw22  60 
site1 simulated raw21  54 
site1 simulated raw22  59 
site1 measured adj21  23 
site1 measured adj22  27 
site1 simulated adj21  22 
site1 simulated adj22  28 
site1 meaured  0.5   40 
site1 meaured  0.8   55 
site1 simulated 0.5   40 
site1 simulated 0.8   57 

처럼해야 하는가? 구조에

답변

2

tidyr 라이브러리 : 여기

library(tidyr) 
df <- separate(df, col = scenario, into = c("scenario","scenario1"), sep = "_") 
+0

많은 감사 올리버를 사용하는 옵션입니다. 레벨이 'simulated_raw21_nodrain'과 비슷한 경우 어떻게해야합니까? 어떤 제안을 두 개의'simulated'와'raw21_nodrain'으로 나누는 지 제안합니다. – aelwan

+0

고마워요.하지만 두 개의 매개 변수 만 사용하는 것을 의미했습니다. 시나리오는'simulated'이고, 시나리오 1은'raw21_nodrain'을 가질 것입니다. – aelwan

+1

'reshape2' 패키지에서'colsplit'을 시도하십시오. 'colsplit (df $ 시나리오, "_", c ("시나리오", "scneario1"))' –

1

당신의 시간과 도움을 base R

cbind(df[-2], read.table(text=as.character(df$scenario), sep="_", 
     header=FALSE, col.names = c("scenario", "scenario1")))]c(1, 3, 4, 2)]