Есть ли способ проверить, какое значение в векторе / столбце ближе всего к заданному значению?
так, например, у меня есть столбец с количеством дней: дней: 50, 49, 59, 180, 170, 199, 200
Я хочу создать новый столбец в фрейме данных, который будет отмечать X каждый раз, когда столбец dayscolumn имеет значение 183 или близкое к 183
Должно получиться так:
DAYS new column
0
12
12
14
133
140 X
0
12
14
15
178
183 X
0
15
30
72
172 X
Надеюсь, ты сможешь мне помочь!
близко к 183? как близко ?
да. Значения туалетов в каждом блоке данных, разделенные нулями. Итак, дни, ближайшие к полугодию (182/183 дня)
По сути, вы ищете локальные максимумы. Начните с нормализации ваших данных к вашей цели, то есть 183, и найдите значения, наиболее близкие к нулю. Это ваши локальные максимумы. Для демонстрации я добавил данные со значениями, превышающими вашу цель.
df <- data.frame(DAYS = c(0,12,12,14,133,140,0,12,14,15,178,183,184,190,0,15,30,72,172,172.5))
df$localmin <- abs(df$DAYS - 183)
df
> df
DAYS localmin
1 0.0 183.0
2 12.0 171.0
3 12.0 171.0
4 14.0 169.0
5 133.0 50.0
6 140.0 43.0
7 0.0 183.0
8 12.0 171.0
9 14.0 169.0
10 15.0 168.0
11 178.0 5.0
12 183.0 0.0
13 184.0 1.0
14 190.0 7.0
15 0.0 183.0
16 15.0 168.0
17 30.0 153.0
18 72.0 111.0
19 172.0 11.0
20 172.5 10.5
targets <- which(diff(sign(diff(c(df$localmin, 183)))) == 2) + 1L
df$targets <- 0
df$targets[targets] <- 1
df
> df
DAYS localmin targets
1 0.0 183.0 0
2 12.0 171.0 0
3 12.0 171.0 0
4 14.0 169.0 0
5 133.0 50.0 0
6 140.0 43.0 1
7 0.0 183.0 0
8 12.0 171.0 0
9 14.0 169.0 0
10 15.0 168.0 0
11 178.0 5.0 0
12 183.0 0.0 1
13 184.0 1.0 0
14 190.0 7.0 0
15 0.0 183.0 0
16 15.0 168.0 0
17 30.0 153.0 0
18 72.0 111.0 0
19 172.0 11.0 0
20 172.5 10.5 1
Я пробовал это, но не раз в полгода или близко?
Что делать, если у меня есть свидания? поэтому вместо столбца ДНИ у меня есть даты, например: ("2015-02-10"). И мне нравится делать новый столбец, который отмечает, когда между датами прошел 1 год? Можете ли вы использовать здесь тот же метод? И как?
Что это за маркировка, и в каком формате ваши данные? Если у вас есть даты, вы можете преобразовать их в день года. 1 год между какими датами? Вы должны либо отредактировать свой вопрос, чтобы задать свой вопрос, либо открыть новый вопрос. И сделать его воспроизводимым, особенно если ваши данные не в том формате, который вы разместили здесь.
Вы имеете в виду ближайшее значение в каждом блоке данных, разделенное нулями?