2017-01-12 14 views
0

への変数の分割レベル私はこのDFで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を持っているが、私は2つの列

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'のような場合はどうなりますか?どのように2つの 'simulated'と' raw21_nodrain'に分割するかの提案。 – aelwan

+0

ありがとうございましたが、私は2つのパラメータだけを持っていることを意味しました シナリオは 'シミュレート'し、シナリオ1は 'raw21_nodrain'を持ちます – aelwan

+1

' reshape2'パッケージで 'colsplit'を試してみてください。 'colsplit(df $ scenario、" _ "、c(" scenario "、" 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)]