R 用小于行的值替换行';在它前面加上插值
我有整数变量,它们是时间的函数。但是,在某些错误中,值在第二天减小,这是由于人为错误造成的。即R 用小于行的值替换行';在它前面加上插值,r,R,我有整数变量,它们是时间的函数。但是,在某些错误中,值在第二天减小,这是由于人为错误造成的。即 Date Cases 2020-03-03 24 2020-03-02 21 2020-03-01 23 在“案例”中,21是一个错误。如何用插值替换列中小于前面行的值 你可以试试 wrong <- c(0, diff(df$Cases)) < 0 df$Cases[wrong] <- df$Cases[which(wrong) -
Date Cases
2020-03-03 24
2020-03-02 21
2020-03-01 23
在“案例”中,21是一个错误。如何用插值替换列中小于前面行的值 你可以试试
wrong <- c(0, diff(df$Cases)) < 0
df$Cases[wrong] <- df$Cases[which(wrong) - 1]
使用插值:
df$Date[c(0, diff(df$Cases)) < 0] <- NA
df$Date <- as.POSIXct(zoo::na.approx(df$Date), origin = "1970-01-01")
df$Date[c(0,diff(df$Cases))<0]在dplyr
library(dplyr)
df1 %>%
mutate(Cases = case_when(Cases - lag(Cases,
default = first(Cases)) < 0 ~ lag(Cases), TRUE ~ Cases))
# Date Cases
#1 2020-03-03 24
#2 2020-03-02 24
#3 2020-03-01 23
库(dplyr)
df1%>%
突变(Cases=case_when(Cases-lag)(Cases,
默认值=first(Cases))<0~滞后(Cases),TRUE~滞后(Cases))
#日期案例
#1 2020-03-03 24
#2 2020-03-02 24
#3 2020-03-01 23
数据
df1Cases
中的值应该是24还是23?它可以是23或24,因为它小于23,这是错误的。第3行中的Cases仍然需要插值,因为它小于24。整个代码不应该在一个循环中吗?@ahb65也许。现在我再看一遍,这个问题有点不清楚了。我认为我的解决方案适用于描述的问题,而不是演示的问题。但是如果作为一个循环来做,它只会for(i在seq_中沿着(df$Cases)[-1])if(df$Cases[i]library(dplyr)
df1 %>%
mutate(Cases = case_when(Cases - lag(Cases,
default = first(Cases)) < 0 ~ lag(Cases), TRUE ~ Cases))
# Date Cases
#1 2020-03-03 24
#2 2020-03-02 24
#3 2020-03-01 23
df1 <- structure(list(Date = c("2020-03-03", "2020-03-02", "2020-03-01"
), Cases = c(24L, 21L, 23L)), class = "data.frame", row.names = c(NA,
-3L))