2014-01-08 2 views
0

мне нужно некоторые рекомендации для следующей задачи:R: Создание двоичных данных из кадра данных

У меня есть dataframe с двумя колоннами, одна из которых содержит дату, другая частоту события. Теперь я хочу добавить третий столбец к этому фреймворку данных, который должен содержать некоторые двоичные данные: 1 для дней с частотой 100 и выше, 0 для нижних.

У кого-нибудь есть идея, как это сделать умным способом (я боюсь писать это вручную ;-)? Спасибо за ваш ответ заранее!

ответ

0

df$freq.gt.100 = as.integer(df$freq >= 100)

Бит внутри скобок вычисляется в TRUE или FALSE, которые могут быть преобразованы в 1 или 0 с помощью as.integer.

Нечего бояться: вы можете проверить правую часть выражения самостоятельно, чтобы проверить, работает ли оно, и только когда вы довольны этим, вы добавляете его как новый столбец к оригиналу данные.

EDIT: не видел вышеуказанного ответа, поскольку я создавал этот и получил звонок, чтобы принять!

1
data$newcol = as.integer(data$freq >= 100) 

альтернативно

data$newcol = ifelse(data$freq >= 100, 1, 0) 

альтернативно

data$newcal = 0 
data$newcol[data$freq >= 100] = 1 
+0

Или просто 'data $ newcol <- (data $ freq> = 100) * 1L' –

+1

Я предпочел бы' data $ newcol = as.integer (data $ freq> = 100) ' –

+1

да, это тоже , Точка, нет необходимости использовать два вызова, и вы, конечно, не должны использовать 'ifelse' здесь, когда существуют более быстрые векторизованные методы. –

Смежные вопросы