2016-08-15 64 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列具有整数类型,所以我所做的整数运算的时候,得到的整数结果。