2013-04-04 2 views
-4

Так вот мой вопрос: я был дан набор данных и инструкции являются: моделиКак сформулировать утверждение в r?

роста генерируются путем преобразования переменной X в новой категориальной переменной, которую можно назвать «рост». Первая категория присваивается островам в переменной X, которые находятся между 15 и 50.

Итак, вот в чем вопрос, но моя основная головная боль заключается в том, как писать «от 15 до 50 на языке R. Это то, что у меня есть

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

Но я не знаю, какую команду ставить в части ???

+0

Вашего вопроса не ясно (и вы должны сделать заголовок, специфичный для ваших вопрос), но похоже, что вы ищете функцию разреза, которая превращает непрерывную переменную в условную переменную. (Тем не менее, ваш вопрос не указывает, что вторая, третья и т.д. категории ...) –

ответ

2

Давайте что-нибудь воспроизводимый:.

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

Ваши точные вопросы, как писать «от 15 до 50» отвечает рассказав R «больше, чем 15 и меньше, чем 50»:

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

Это дает вектор TRUE/FALSE. Это та же длина, что и x, и имеет значение ИСТИНА, когда ваши критерии соответствуют (между 15 и 50) и FALSE в противном случае. (NB: я использовал более 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