Для образца dataframe:Новый столбец в R, используя, если заявление
df2<- structure(list(region = c("AT22", "AT13", "AT12", "AT11", "AT33",
"AT31", "AT21", "AT34", "AT32", "BE21", "BE10", "BE24", "BE31",
"BE25", "BE23", "BE32", "BE33", "BE22", "BE34", "BE35"), N = c(241L,
346L, 306L, 55L, 139L, 311L, 107L, 79L, 119L, 244L, 143L, 146L,
59L, 212L, 203L, 223L, 173L, 147L, 54L, 75L), freq.1 = c(62L,
104L, 64L, 20L, 24L, 78L, 23L, 10L, 20L, 65L, 24L, 29L, 9L, 46L,
51L, 74L, 36L, 33L, 14L, 16L), result = c(24.95, 29.97, 21.1,
36.27, 18.38, 24.8, 21.28, 12.54, 17.21, 26.64, 16.78, 19.86,
15.25, 21.7, 25.12, 33.18, 20.81, 22.45, 25.93, 21.33), level = c(2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2), delete = c(1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)), .Names = c("region",
"N", "freq.1", "result", "level", "delete"), class = c("data.table",
"data.frame"), row.names = c(NA, -20L))
Я хочу создать переменную с именем «удалить», который выдвигает на первый план, который наблюдения имеют «N» больше или равно 100 или «Freg. 1' больше или равно 20. в настоящее время я использую следующий код:
df$delete <- if (df$N >=100 | df$freq.1>=20) 1 else 0
... но это ставит 1s в каждой строке - строки 8, 13, 19 и 20 должны фактически иметь 0s.
Любые идеи?
Умный, добавляя + к логическому, делает его 0/1. –
За исключением небольших номеров, они выглядят одинаково быстро для меня: https://gist.github.com/1beb/1285a7689184b098703f –
@BrandonBertelsen Если я помню некоторые другие тесты, сделанные в прошлом, 'ifelse' отставал от – akrun