2017-10-20 3 views
1

このサイトの以前の投稿をいくつか試してみましたが、成功しませんでした。基本的に私は次の形式でデータセットがあります。測定された変数を使用して、列からデータへの形状を変更する際の問題

Year Measurement 
2006 25.5 
2006 19.2 
2005 10.3 
2005 30.7 
2005 15.5 
2005 37.1 
2004 10.2 
2004 19.6 
2004 11.7 

を私はする必要がある場所です:

2006 2005 2004 
25.5 10.3 10.2 
19.2 30.7 19.6 
NA 15.5 11.7 
NA 37.1 NA 

結局、私が必要とする各年の変数のボックスプロットである、としDuncanのテストを長年に渡って行うことができます。彼らが私を助けることができるなら、誰もが飲み物を買うだろう!私はこれまでに似たようなことをしてきましたが、私の人生はコードを見つけることができません。

以下の提案を試みた後:

> x <- df %>% 
+ group_by(Year) %>% mutate(idx = row_number()) 
> spread(Year) %>% 
+ select("2006", "2005", "2004") 
Error: Please supply column name 

、xの出力テーブルを次のとおりです。

> x 
Source: local data frame [1,566 x 3] 
Groups: Year [108] 

    Year  SO4 idx 
    <int> <dbl> <int> 
1 2007 26.34704  1 
2 2007 90.44014  2 
3 2007 46.90688  3 
4 2007 49.58418  4 
5 2007 74.22378  5 
6 2007 40.61453  6 
7 2006 60.19040  1 
8 2006 53.03285  2 
9 2006 44.14015  3 
10 2006 29.36072  4 
# ... with 1,556 more rows 

答えて

0

私は、これはあなたが欲しいものだと思う:

library(tibble) 
library(tidyr) 
library(dplyr) 

x <- df %>% 
    rownames_to_column() %>% 
    spread(Year, Measurement) %>% 
    select("2006", "2005", "2004") 

出力:

# 2006 2005 2004 
# 1 25.5 NA NA 
# 2 19.2 NA NA 
# 3 NA 10.3 NA 
# 4 NA 30.7 NA 
# 5 NA 15.5 NA 
# 6 NA 37.1 NA 
# 7 NA NA 10.2 
# 8 NA NA 19.6 
# 9 NA NA 11.7 

boxplot(x)で希望するプロットを作成できます。

+0

'rownames_to_column()'の代わりに 'group_by(Year)%>%mutate(idx = row_number())'を使用すると、望ましい出力が得られます。 –

+0

これは次のようになります: '> x <- df %>% + group_by(年)%>%mutate(idx =行番号) > spread(年)%>% + select(" 2006 "、" 2005 "、" 2004 " ) エラー:カラム名 ' –

+0

を指定してください。あなたが' dput'で適切なデータセットを提供したら、私はあなたを助けることができます。 – jsb

関連する問題