所以这是我的问题:我得到了一个数据集,指令是:
增长模式是通过将 X 变量转换为一个新的分类变量来生成的,该变量可以命名为“增长”。第一类分配给 X 变量中介于 15 到 50 之间的岛屿。
所以这就是问题,但我主要头疼的是如何用 R 语言写“15 到 50 之间”。这就是我所拥有的
growth$mediumgrowth.islands <- growth$SasiaUrban.X[growth$SasiaUrban.X ???]
但我不知道该放什么命令???部分。
所以这是我的问题:我得到了一个数据集,指令是:
增长模式是通过将 X 变量转换为一个新的分类变量来生成的,该变量可以命名为“增长”。第一类分配给 X 变量中介于 15 到 50 之间的岛屿。
所以这就是问题,但我主要头疼的是如何用 R 语言写“15 到 50 之间”。这就是我所拥有的
growth$mediumgrowth.islands <- growth$SasiaUrban.X[growth$SasiaUrban.X ???]
但我不知道该放什么命令???部分。
让我们得到一些可重现的东西:
set.seed(47)
df <- data.frame(x = sample(60, 100, replace = TRUE))
通过告诉 R“大于 15且小于 50”来回答您的确切问题,即如何写“介于 15 和 50 之间”:
## What's between 15 and 50?
df$x > 15 & df$x <= 50
这给了你一个真/假的向量。当您的条件匹配(在 15 到 50 之间)时,它的长度相同x
并且为 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)