2017-10-20 1 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 

내가 필요한 것은 매년 변수의 박스 플롯이며, 수년간 던컨의 시험을 수행 할 수 있어야합니다. 그들이 나를 도울 수 있다면 나는 술 한 잔 사줄거야! 나는 전에 비슷한 것을했고, 내 삶에서 그 코드를 찾을 수 없다.

아래의 제안 시도 후 :

> 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

관련 문제