У меня есть список значений в столбце Net.Chg
с отрицательным, положительным и нулевым значением. Я хочу заменить все нули на 1
, если за ним следует положительное число, и на -1
, если за ним следует отрицательное число.
Вот пример данных
Time.Interval Net.Chg
2-Jan-17 _00:00:00.000000 NA
19:15 - 19:16 -0.0047
19:16 - 19:17 0
19:17 - 19:18 0
3-Jan-17 _00:00:00.000000 NA
03:45 - 03:46 0
03:54 - 03:55 -0.0002
19:43 - 19:44 -0.0008
20:01 - 20:02 0.0025
4-Jan-17 _00:00:00.000000 NA
00:54 - 00:55 0
01:10 - 01:11 0.0005
01:11 - 01:12 0
Моя задача - изменить все положительные значения на 1
, а также все отрицательные значения на -1
. Я использовал следующий код
data$Net.Chg <- sign(Net.Chg)
но он не может работать с нулями.
Time.Interval <- c('2-Jan-17 _00:00:00.000000', '19:15 - 19:16', '19:16 - 19:17', '19:17 - 19:18', '3-Jan-17 _00:00:00.000000', '03:45 - 03:46', '03:54 - 03:55', '19:43 - 19:44', '20:01 - 20:02', '4-Jan-17 _00:00:00.000000', '00:54 - 00:55', '01:10 - 01:11', '01:11 - 01:12')
Net.Chg <- c(NA, -0.0047, 0, 0, NA, 0, -0.0002, -0.0008, 0.0025, NA, 0, 0.0005, 0)
data <- data.frame(Time.Interval, Net.Chg)
Требуемое значение должно быть
Time.Interval Net.Chg Required
2-Jan-17 _00:00:00.000000 NA NA
19:15 - 19:16 -0.0047 -1
19:16 - 19:17 0 -1
19:17 - 19:18 0 -1
3-Jan-17 _00:00:00.000000 NA NA
03:45 - 03:46 0 -1
03:54 - 03:55 -0.0002 -1
19:43 - 19:44 -0.0008 -1
20:01 - 20:02 0.0025 1
4-Jan-17 _00:00:00.000000 NA NA
00:54 - 00:55 0 1
01:10 - 01:11 0.0005 1
01:11 - 01:12 0 1
Если вы смотрите, дата не имеет значения при изменении нуля на 1
и -1