2016-08-15 61 views
-1

我有一列指定了我的數據中使用的類型os制裁。這看起來是這樣的:創建新列

      country sanction_type 
         (chr)   (int) 
1       China   2 
2       Austria   5 
3     South Africa   1 
4       Poland   6 
5       Poland   7 
6 Bolivia, Plurinational State of   2 

制裁的類型範圍從1-10。我如何創建兩個額外的列,其中一個包括制裁類型1,2,3,4和另一個5,6,7,8,9,10。我還想保留現有的所有制裁類型。非常感謝!

該數據集有超過6個觀測值,這只是數據的一個樣本。對困惑感到抱歉。

+1

你想要的額外列是虛擬變量? – udden2903

+1

是的,我想讓他們成爲傻瓜 –

回答

1

使用dplyr包:

country <- c("China","Austria","South Africa","Poland", "Poland", "Bolivia") 
sanction_type <- c(2,5,1,6,7,2) 
df <- data.frame(country, sanction_type) 

library(dplyr) 

df <- mutate(df, srange1 = ifelse(sanction_type <= 4, 1, 0), 
      srange2 = ifelse(sanction_type >= 5, 1, 0)) 
+2

真的不需要加載一個包來添加一列。在基數R中有很多方法。如果你喜歡'mutate',基R的'transform'在功能上是相同的。 –

+0

我剛纔意識到我沒有說清楚,我在實際數據中有更多的觀察,1097被提取。所以我正在尋找一種方法將制裁類型分成兩個單獨的列(1,2,3,4和5,6,7,8,9,10) –

+0

@ jo.magi這就是代碼的作用。只需用您的數據框的名稱替換df即可。庫之前的部分(dplyr)僅用於說明目的。 – udden2903

4

讓你的數據幀是dat

dat$less4 <- as.integer(dat$sanction_type <= 4L) 
dat$great5 <- 1L - dat$less4 

我看到你的sanction_type列具有整數類型,所以我所做的整數運算的時候,得到的整數結果。