2013-04-04 72 views
-4

所以这是我的问题:我一直在考虑数据集和指令是:如何在r中编写一个语句?

增长模式是通过将X变量到一个新的分类变量,它们可被称为“保增长”产生。第一类被分配到15到50之间的X变量中的岛屿。

这就是问题所在,但我最头疼的是如何编写“在R语言中的15到50之间”。我有

growth$mediumgrowth.islands <- growth$SasiaUrban.X[growth$SasiaUrban.X ???] 

但我不知道是什么命令将在???部分

+0

你的问题不明确(而且你应该在特定的标题到您的问题),但它听起来像是在寻找cut函数,它将一个连续变量转变为一个分类的分类变量。 (但是,你的问题没有说明第二,第三等类别是什么......) – 2013-04-04 19:16:56

回答

2

让我们得到一些重复性:

set.seed(47) 
df <- data.frame(x = sample(60, 100, replace = TRUE)) 

你确切的问题,如何写“15至50”是通过讲述R“小于50大于15 ”回答:

## What's between 15 and 50? 
df$x > 15 & df$x <= 50 

这使你的TRUE/FALSE的向量。它与x的长度相同,当您的标准匹配(15到50之间)时为TRUE,否则为FALSE。 (注意:我使用了大于15且小于或等于50,您可能需要调整它。)填写“???”将是growth$SasiaUrban.X[growth$SasiaUrban.X > 15 & growth$SasiaUrban.X <= 50]

## We could assign this as a new column 
df$between15and50 <- df$x > 15 & df$x <= 50 

如果你想要更多的类别,它是有道理的做一次全部和cut让一切变得简单:

## Or we could use cut 
cut(df$x, breaks = c(0, 15, 50, 100)) 

df$category <- cut(df$x, breaks = c(0, 15, 50, 100)) 

## Adding labels instead 
df$category2 <- cut(df$x, breaks = c(0, 15, 50, 100), 
    labels = c("low", "medium", "high")) 

head(df) 
+0

谢谢你的作品! – user2243433 2013-04-05 03:16:45