2017-11-03 8 views
1

私は以下の構造を持つデータフレームを持っている:ギャザーと...を使用してデータフレームを整理する?

record <- c(seq_along(1:10)) 
store <- c(1, 2, 3, 4, 5, 1, 2, 3, 4, 5) 
week <- c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2) 
sales_1 <- c(3, 3, 3, 3, 3, 2, 5, 1, 2, 10) 
sales_2 <- c(1, 2, 4, 5, 6, 2, 3, 6, 1, 8) 
price_1 <- runif(10, 2, 6) 
price_2 <- runif(10, 2, 6) 

df <- data_frame(record, store, week, sales_1, sales_2, price_1, price_2) 

は、私が「レコード」、「店」と「週」列がすべて保存されていることにより、これを収集し、それを変換するとしますが、その後私はまた、作成それぞれの 'sales_'と 'price_'列の最後に末尾の数字を表す 'category'という新しい列。最後に、「売上」と「価格」列の値を2つの列(単に「売上高」と「価格」)に集約します。結果は次のようになります。

record | store | week | category | sales | price 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    1  1  1  1   3  2.51 
    1  1  1  2   1  5.50 
    2  2  1  1   3  4.86 

元の説明はhereです。おかげで...私はここに終わるだろうと予測誰

答えて

2

を@markdlyするためにあなたはgather販売価格列、新しいヘッダーとカテゴリにキーを分離することができやヘッダ、その後spread

df %>% 
    gather(key, val, sales_1:price_2) %>% 
    separate(key, c('header', 'category'), sep='_') %>% 
    spread(header, val) 

# A tibble: 20 x 6 
# record store week category price sales 
# * <int> <dbl> <dbl> <chr> <dbl> <dbl> 
# 1  1  1  1  1 5.005186  3 
# 2  1  1  1  2 4.184387  1 
# 3  2  2  1  1 3.790764  3 
# 4  2  2  1  2 4.668122  2 
# ... 
関連する問題