Проверить ближайшее значение в столбце

Есть ли способ проверить, какое значение в векторе / столбце ближе всего к заданному значению?

так, например, у меня есть столбец с количеством дней: дней: 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

Надеюсь, ты сможешь мне помочь!

Вы имеете в виду ближайшее значение в каждом блоке данных, разделенное нулями?

talat 18.12.2018 14:02

близко к 183? как близко ?

YOLO 18.12.2018 14:03

да. Значения туалетов в каждом блоке данных, разделенные нулями. Итак, дни, ближайшие к полугодию (182/183 дня)

user10806160 18.12.2018 19:27
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
95
1

Ответы 1

По сути, вы ищете локальные максимумы. Начните с нормализации ваших данных к вашей цели, то есть 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

Я пробовал это, но не раз в полгода или близко?

user10806160 19.12.2018 09:00

Что делать, если у меня есть свидания? поэтому вместо столбца ДНИ у меня есть даты, например: ("2015-02-10"). И мне нравится делать новый столбец, который отмечает, когда между датами прошел 1 год? Можете ли вы использовать здесь тот же метод? И как?

user10806160 19.12.2018 12:11

Что это за маркировка, и в каком формате ваши данные? Если у вас есть даты, вы можете преобразовать их в день года. 1 год между какими датами? Вы должны либо отредактировать свой вопрос, чтобы задать свой вопрос, либо открыть новый вопрос. И сделать его воспроизводимым, особенно если ваши данные не в том формате, который вы разместили здесь.

Anonymous coward 19.12.2018 16:49

Другие вопросы по теме