2016-11-11 39 views
-2

Education_table如何映射來自表格中的數據R

正如您在圖像上看到的那樣。 表顯示教育(因素)和education_num(int)之間的關係。 簡單地說,幼兒園是1作爲education_num 1至4是2作爲education_num 等等 博士是16作爲education_num。 問題是我想製作一張映射教育和education_num的新表格。 即, 它看起來像

學齡前1

1s4-第四2

博士16

我想我需要使用切()或添加選項在表中(),但我不知道如何做到這一點。

感謝

+0

使用'dput請提供可重複的例子()'。將指針懸停在「r」標籤上以獲取更多信息。 –

+0

1)可重複的例子(2)研究努力 – vagabond

回答

1

我假設你有原始數據幀的人口普查,在那樣的形式:

> df <- data.frame(education=c("pre","pre","1st-4th","5th-6th","1st-4th"),education_num=c(1,1,2,3,2)) 

> df 
    education education_num 
1  pre    1 
2  pre    1 
3 1st-4th    2 
4 5th-6th    3 
5 1st-4th    2 

所以,你可以得到獨特的價值觀:

> unique(df) 
    education education_num 
1  pre    1 
3 1st-4th    2 
4 5th-6th    3 

,或者如果你有其他數據幀中的列,您可以使用:

library(dplyr) 

df %>% 
    group_by(education) %>% 
    summarise(education_num=unique(education_num)) %>% 
    arrange(education_num) 

# A tibble: 3 x 2 
    education education_num 
    <fctr>   <dbl> 
1  pre    1 
2 1st-4th    2 
3 5th-6th    3 

編輯

如果你想從該表進行改造,就可以使用以下命令:

df <- data.frame(education=c("pre","pre","1st-4th","5th-6th","1st-4th"),education_num=c(1,1,2,3,2)) 

kk <- table(df$education,df$education_num) 

> kk 

      1 2 3 
    1st-4th 0 2 0 
    5th-6th 0 0 1 
    pre  2 0 0 

dfx <- data.frame(edu=row.names(kk)) %>% 
     mutate(edu_num=sapply(edu, function(x) which(kk[x,]>0))) 

> dfx 
     edu edu_num 
1 1st-4th  2 
2 5th-6th  3 
3  pre  1 
+0

首先,謝謝你的回答。 那麼,我問的不是如何獲得每個值,但 如何從上表轉換爲您在答案上作出的表 –

+0

我編輯我的答案,檢查出來。 – OmaymaS

+0

這可以幫助我很多。自從我知道如何實施其他方式以來 但我只想知道這項工作是否有捷徑。 非常感謝 –