2017-11-20 1 views
0

문제점 : 기존 데이터 세트에서 새 데이터 세트를 생성하는 방법.변환 데이터 구조

나는 평범하지 않은 양의 데이터를 가지고있다. 데이터는 섹스, 출신 국가, 근무하는 분야 및 직업이있는 개인에게 있습니다.

나는 다음과 같이하고 싶습니다 : 1. 나는 모든 섹터 X 직업 조합이 저장된 열을 만듭니다. 2. 각 섹터 X 직업에 대해 여성의 수, 남성의 수 및 각 국가의 수를 계산하십시오.

id  <- c(1,2,3,4,5) 
occupation <- c(11,12,11,12,11) 
sector <- c("a", "b", "c", "a", "b") 
sex  <- c(0,1,0,1,0) 
country <- c(1,2,3,2,1) 
data <- data.frame(id, occupation, sector, sex, country) 

id occupation sector sex country 
1 11   a  0 1  
2 12   b  1 2  
3 11   a  0 3   
4 12   a  1 2   
5 11   b  0 1   

이 내가 얻을하고자하는 것입니다 :

occXsector sex0 sex1 country1 country2 country3 
1 11-a  0 2 1  0  1 
2 11-b  0 1 1  0  0 
3 12-a  1 0 0  1  0 
4 12-b  1 0 0  1  0 

어떤 도움이 많이 주시면 감사하겠습니다!

답변

3

당신은 당신의 입/출력을 정리해야합니다, 즉, 당신이주는 입력에서 의미가 있지만, 제공하지 않습니다 보여 예상 출력은 이것을

library(dplyr) 
library(tidyr) 
data %>% 
    mutate(occXsector = paste(occupation, sector, sep="-")) %>% 
    gather(key, value, sex, country) %>% 
    mutate(newvalue = paste(key, value, sep="")) %>% 
    group_by(occXsector) %>% 
    count(newvalue) %>% 
    spread(newvalue, n, fill=0) 

# A tibble: 5 x 6 
# Groups: occXsector [5] 
    occXsector country1 country2 country3 sex0 sex1 
*  <chr> <dbl> <dbl> <dbl> <dbl> <dbl> 
1  11-a  1  0  0  1  0 
2  11-b  1  0  0  1  0 
3  11-c  0  0  1  1  0 
4  12-a  0  1  0  0  1 
5  12-b  0  1  0  0  1  
+0

감사를 시도한다! 위대한 작품! 나는 네가 그곳에서 한 일에 대해 머리를 감싸는 데 시간이 좀 걸릴 것이다. 그러나 그것은 굉장하다. – cremorna