我有以下矩阵:
> dput(result)
structure(list(X.22.May.2021. = c("22-May-2021", "29-May-2021",
"05-Jun-2021", "12-Jun-2021", "19-Jun-2021", "26-Jun-2021", "03-Jul-2021",
"10-Jul-2021", "17-Jul-2021", "24-Jul-2021", "31-Jul-2021", "07-Aug-2021",
"14-Aug-2021", "21-Aug-2021", "28-Aug-2021", "04-Sep-2021", "11-Sep-2021",
"18-Sep-2021", "25-Sep-2021", "02-Oct-2021", "09-Oct-2021", "16-Oct-2021",
"23-Oct-2021", "30-Oct-2021", "06-Nov-2021", "13-Nov-2021", "20-Nov-2021",
"27-Nov-2021", "04-Dec-2021", "11-Dec-2021", "18-Dec-2021", "25-Dec-2021",
"01-Jan-2022", "08-Jan-2022", "15-Jan-2022", "22-Jan-2022", "29-Jan-2022",
"05-Feb-2022", "12-Feb-2022", "19-Feb-2022", "26-Feb-2022", "05-Mar-2022",
"12-Mar-2022", "19-Mar-2022", "26-Mar-2022", "02-Apr-2022", "09-Apr-2022",
"16-Apr-2022", "23-Apr-2022", "30-Apr-2022", "07-May-2022", "14-May-2022",
"21-May-2022", "28-May-2022", "04-Jun-2022", "11-Jun-2022", "18-Jun-2022",
"25-Jun-2022", "02-Jul-2022", "09-Jul-2022", "16-Jul-2022", "23-Jul-2022",
"30-Jul-2022", "06-Aug-2022", "13-Aug-2022", "20-Aug-2022", "27-Aug-2022",
"03-Sep-2022", "10-Sep-2022", "17-Sep-2022", "24-Sep-2022", "01-Oct-2022",
"08-Oct-2022", "15-Oct-2022", "22-Oct-2022", "29-Oct-2022", "05-Nov-2022",
"12-Nov-2022", "19-Nov-2022", "26-Nov-2022", "03-Dec-2022", "10-Dec-2022",
"17-Dec-2022", "24-Dec-2022", "31-Dec-2022", "07-Jan-2023", "14-Jan-2023",
"21-Jan-2023", "28-Jan-2023", "04-Feb-2023", "11-Feb-2023", "18-Feb-2023",
"25-Feb-2023", "04-Mar-2023", "11-Mar-2023", "18-Mar-2023", "25-Mar-2023",
"01-Apr-2023", "08-Apr-2023", "15-Apr-2023", "22-Apr-2023"),
X.0. = c("0", "0", "0", "0", "0", "0", "0", "0", "0", "0",
"0", "0", "0", "1", "2", "3", "4", "5", "5", "5", "5", "5",
"5", "5", "5", "5", "5", "5", "5", "5", "5", "5", "5", "5",
"5", "5", "5", "5", "5", "5", "5", "5", "5", "5", "5", "5",
"5", "5", "5", "5", "5", "5", "5", "5", "5", "5", "5", "5",
"5", "5", "5", "5", "5", "5", "5", "5", "5", "5", "5", "5",
"5", "5", "5", "5", "5", "5", "5", "5", "5", "5", "5", "5",
"5", "5", "5", "5", "5", "5", "5", "5", "5", "5", "5", "5",
"5", "0", "0", "0", "0", "0", "0"), X.0..1 = c("0", "0",
"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0",
"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0",
"0", "0", "0", "0", "0", "0", "0", "0", "0", "2", "6", "6",
"6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6",
"6", "6", "7", "7", "7", "7", "7", "7", "7", "7", "7", "7",
"7", "7", "7", "7", "7", "7", "7", "7", "7", "7", "7", "7",
"7", "7", "7", "7", "7", "7", "7", "7", "7", "7", "7", "7",
"7", "7", "7", "7", "7", "0", "0", "0", "0", "0", "0", "0",
"0", "0", "0"), X.0..2 = c("0", "0", "0", "0", "0", "0",
"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0",
"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0",
"0", "0", "0", "0", "0", "2", "6", "6", "6", "6", "6", "6",
"6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "7", "7",
"7", "7", "7", "7", "7", "7", "7", "7", "7", "7", "7", "7",
"7", "7", "7", "7", "7", "7", "7", "7", "7", "7", "7", "7",
"7", "7", "7", "7", "7", "7", "7", "7", "7", "7", "7", "7",
"7", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"), X.0..3 = c("0",
"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0",
"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0",
"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "2", "6",
"6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6",
"6", "6", "6", "7", "7", "7", "7", "7", "7", "7", "7", "7",
"7", "7", "7", "7", "7", "7", "7", "7", "7", "7", "7", "7",
"7", "7", "7", "7", "7", "7", "7", "7", "7", "7", "7", "7",
"7", "7", "7", "7", "7", "7", "7", "7", "7", "7", "7", "7",
"7", "7", "7", "7"), X.0..4 = c("0", "0", "0", "0", "0",
"0", "0", "1", "1", "2", "2", "3", "3", "4", "5", "6", "7",
"9", "11", "14", "16", "19", "22", "25", "29", "33", "37",
"41", "45", "50", "53", "58", "62", "67", "71", "76", "81",
"86", "90", "95", "99", "104", "109", "114", "118", "123",
"128", "133", "137", "142", "147", "153", "157", "162", "166",
"172", "176", "181", "185", "190", "195", "199", "204", "209",
"213", "218", "223", "227", "232", "237", "242", "246", "251",
"256", "261", "266", "270", "276", "280", "284", "289", "294",
"299", "300", "300", "300", "300", "300", "300", "300", "300",
"300", "300", "0", "0", "0", "0", "0", "0", "0", "0"), X.0..5 = c("0",
"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0",
"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0",
"0", "0", "1", "2", "3", "4", "5", "7", "9", "11", "11",
"11", "13", "16", "19", "24", "29", "34", "39", "45", "51",
"57", "65", "72", "80", "87", "87", "90", "97", "106", "113",
"121", "129", "135", "143", "153", "161", "170", "175", "184",
"192", "199", "203", "206", "211", "216", "225", "230", "238",
"246", "254", "262", "271", "280", "288", "297", "300", "300",
"300", "300", "300", "300", "300", "300", "300", "300", "0",
"0", "0", "0", "0", "0", "0", "0", "0", "0"), X.0..6 = c("0",
"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0",
"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0",
"0", "0", "1", "2", "3", "4", "5", "7", "9", "11", "11",
"11", "13", "16", "19", "24", "29", "34", "39", "45", "50",
"56", "62", "69", "77", "84", "84", "87", "95", "103", "109",
"117", "125", "132", "141", "148", "157", "166", "172", "180",
"188", "195", "198", "201", "206", "212", "220", "226", "235",
"244", "252", "261", "270", "279", "288", "297", "300", "300",
"300", "300", "300", "300", "300", "0", "0", "0", "0", "0",
"0", "0", "0", "0", "0", "0", "0", "0"), X.0..7 = c("0",
"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0",
"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0",
"0", "0", "1", "2", "3", "4", "6", "7", "9", "11", "11",
"11", "13", "16", "20", "24", "28", "33", "38", "42", "48",
"54", "59", "66", "72", "78", "78", "80", "86", "93", "99",
"105", "112", "117", "124", "130", "137", "144", "149", "155",
"160", "166", "169", "171", "174", "178", "184", "189", "196",
"203", "210", "217", "224", "230", "237", "244", "250", "256",
"261", "268", "276", "281", "288", "288", "290", "297", "300",
"300", "300", "300", "300", "300", "300", "300", "300", "0"
)), row.names = c(NA, -101L), class = "data.frame")
> result[85:100,]
X.22.May.2021. X.0. X.0..1 X.0..2 X.0..3 X.0..4 X.0..5 X.0..6 X.0..7
85 31-Dec-2022 5 7 7 7 300 300 300 268
86 07-Jan-2023 5 7 7 7 300 300 300 276
87 14-Jan-2023 5 7 7 7 300 300 300 281
88 21-Jan-2023 5 7 7 7 300 300 300 288
89 28-Jan-2023 5 7 7 7 300 300 0 288
90 04-Feb-2023 5 7 7 7 300 300 0 290
91 11-Feb-2023 5 7 7 7 300 300 0 297
92 18-Feb-2023 5 0 0 7 300 0 0 300
93 25-Feb-2023 5 0 0 7 300 0 0 300
94 04-Mar-2023 5 0 0 7 0 0 0 300
95 11-Mar-2023 5 0 0 7 0 0 0 300
96 18-Mar-2023 0 0 0 7 0 0 0 300
97 25-Mar-2023 0 0 0 7 0 0 0 300
98 01-Apr-2023 0 0 0 7 0 0 0 300
99 08-Apr-2023 0 0 0 7 0 0 0 300
100 15-Apr-2023 0 0 0 7 0 0 0 300
我正在尝试更新列,以便对于在整数之后有零的日期,我希望该值反映整数。例如:
> tail(result)
X.22.May.2021. X.0. X.0..1 X.0..2 X.0..3 X.0..4 X.0..5 X.0..6 X.0..7
96 18-Mar-2023 5 7 7 7 300 300 300 300
97 25-Mar-2023 5 7 7 7 300 300 300 300
98 01-Apr-2023 5 7 7 7 300 300 300 300
99 08-Apr-2023 5 7 7 7 300 300 300 300
100 15-Apr-2023 5 7 7 7 300 300 300 300
101 22-Apr-2023 5 7 7 7 300 300 300 300
我尝试在以下语句中使用shift
来比较与前一行的值,但更新不工作,尽管我没有得到任何错误。
> result <- result %>% mutate(result, across(2:9, ~ if_else(. < shift(.) & shift(.) != 0, max(.), .)))
> result[85:100,]
X.22.May.2021. X.0. X.0..1 X.0..2 X.0..3 X.0..4 X.0..5 X.0..6 X.0..7
85 31-Dec-2022 5 7 7 7 300 300 300 268
86 07-Jan-2023 5 7 7 7 300 300 300 276
87 14-Jan-2023 5 7 7 7 300 300 300 281
88 21-Jan-2023 5 7 7 7 300 300 300 288
89 28-Jan-2023 5 7 7 7 300 300 95 288
90 04-Feb-2023 5 7 7 7 300 300 0 290
91 11-Feb-2023 5 7 7 7 300 300 0 297
92 18-Feb-2023 5 7 7 7 300 97 0 300
93 25-Feb-2023 5 0 0 7 300 0 0 300
94 04-Mar-2023 5 0 0 7 99 0 0 300
95 11-Mar-2023 5 0 0 7 0 0 0 300
96 18-Mar-2023 5 0 0 7 0 0 0 300
97 25-Mar-2023 0 0 0 7 0 0 0 300
98 01-Apr-2023 0 0 0 7 0 0 0 300
99 08-Apr-2023 0 0 0 7 0 0 0 300
100 15-Apr-2023 0 0 0 7 0 0 0 300
任何帮助将不胜感激!
将0改为NA
后可以使用fill
library(dplyr)
library(tidyr)
result1 <- result %>%
mutate(across(2:9, na_if, 0)) %>%
fill(everything(), .direction = "down")
也可能是cummax
result1 <- result %>%
mutate(across(2:9, cummax))