Умножьте определенный диапазон значений во фрейме данных на число - PullRequest
0 голосов
/ 19 июня 2019

У меня есть следующий фрейм данных:

Date<-c("2013-01-01 02:00:00","2013-01-02 02:00:00","2013-01-03 02:00:00","2013-01-01 02:00:00","2013-01-02 02:00:00","2013-01-03 02:00:00")
Parameter<-c("Par1","Par1","Par1","Par2","Par2","Par2")
conc<-c(1,4,3,2,6,5)
obs<-data.frame(Date,Parameter,conc)
obs$Date<-as.POSIXct(obs$Date)
obs$Parameter<-as.factor(obs$Parameter)
obs$conc<-as.numeric(obs$conc)

Мне нужно будет получить значения параметров для периода 2.-3.01.2013 и умножить значение conc только для этих дат на 5.

Есть идеи?

1 Ответ

2 голосов
/ 19 июня 2019

Мы могли бы создать последовательность дат между двумя датами, найти индексы строк, которые перекрываются с ними, а затем умножить эти значения conc на 5.

inds <- as.Date(obs$Date) %in% seq.Date(as.Date("2013-01-02"), 
                               as.Date("2013-01-03"), by = "day")
obs$conc[inds] <- obs$conc[inds] * 5

obs
#                 Date Parameter conc
#1 2013-01-01 02:00:00      Par1    1
#2 2013-01-02 02:00:00      Par1   20
#3 2013-01-03 02:00:00      Par1   15
#4 2013-01-01 02:00:00      Par2    2
#5 2013-01-02 02:00:00      Par2   30
#6 2013-01-03 02:00:00      Par2   25
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...