2017-02-07 21 views
1

目標

我試圖創建一個類別(例如,串)中的R用從不同的變量值的變量,並根據特定標準。問題重新編碼變量與字符串

問題

這似乎沒有實際重新編碼數據。我正在改變數據,但我不確定以何種方式。

數據描述

我有一個數據框,以國家月份分析單位爲結構。其中一個變量是governance,並且是連續的。它的範圍從0.750到4.333。

所採取的步驟

我試圖創造條件,使我創造的治理4個不同的大類標籤分類變量。

這裏是我的嘗試:

syndromes$syndrome_cat <- NA 
syndromes$syndrome_cat[syndromes$governance <= 1.645] <- "Category 1" 
syndromes$syndrome_cat[syndromes$governance >= 1.646 & syndromes$governance <= 2.541] <- "Category 2" 
syndromes$syndrome_cat[syndromes$governance >= 2.542 & syndromes$governance <= 3.437] <- "Category 3" 
syndromes$syndrome_cat[syndromes$governance >= 3.438] <- "Category 3" 

不幸的是,這不會導致上市不同的值,而是會導致這樣的:

summary(variable) 
Length  Class  Mode 
14256  character character 

當我檢查數據,我見這個:

head(syndromes$governance) 
[1] NA NA NA NA NA NA 

我在做什麼錯?

預先感謝您!

+1

請參閱'help(cut)'。您可以削減「治理」並使用新列的結果創建新標籤。 –

+0

我們可能需要您的數據樣本來幫助您瞭解代碼失敗的位置。重新檢查每個列的類型一次 –

+0

謝謝@RichScriven!這工作完美。 – Yasha

回答

2

只要使用這個(如@Rich斯克裏文還建議),也可以通過包含/排除間隔的左/右側改變cut默認行爲:

syndromes$syndrome_cat <- cut(syndromes$governance, breaks=c(-Inf,1.645, 2.541, 3.437,Inf), 
                labels=paste('Category', 1:4)) 
+1

對不起...發佈時我沒有看到你的答案 –

+0

沒關係@ joel.wilson –

+1

問題解決了!非常感謝你,Sandipan! – Yasha

1

隨着dplyr

mydf %>% 
    mutate(group = case_when(.$governance < 1.646 ~ 'Cat1', 
         between(.$governance, 1.646, 2.541) ~ 'Cat2', 
         between(.$governance, 2.542, 3.437) ~ 'Cat3', 
         .$governance > 3.438 ~ 'Cat4')) 
+0

謝謝@ggamba - 我將不得不使用dplyr來嘗試這個。我感謝您的幫助! – Yasha