- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 tidyverse 有条件地将 2017 年 7 月 16 日之前缺失的收入替换为零。
我的数据
library(tidyverse)
library(lubridate)
df<- tribble(
~Date, ~Revenue,
"2017-07-01", 500,
"2017-07-02", 501,
"2017-07-03", 502,
"2017-07-04", 503,
"2017-07-05", 504,
"2017-07-06", 505,
"2017-07-07", 506,
"2017-07-08", 507,
"2017-07-09", 508,
"2017-07-10", 509,
"2017-07-11", 510,
"2017-07-12", NA,
"2017-07-13", NA,
"2017-07-14", NA,
"2017-07-15", NA,
"2017-07-16", NA,
"2017-07-17", NA,
"2017-07-18", NA,
"2017-07-19", NA,
"2017-07-20", NA
)
df$Date <- ymd(df$Date)
我想要有条件更换 NA 的截止日期
max.date <- ymd("2017-07-16")
我想要的输出
# A tibble: 20 × 2
Date Revenue
<chr> <dbl>
1 2017-07-01 500
2 2017-07-02 501
3 2017-07-03 502
4 2017-07-04 503
5 2017-07-05 504
6 2017-07-06 505
7 2017-07-07 506
8 2017-07-08 507
9 2017-07-09 508
10 2017-07-10 509
11 2017-07-11 510
12 2017-07-12 0
13 2017-07-13 0
14 2017-07-14 0
15 2017-07-15 0
16 2017-07-16 0
17 2017-07-17 NA
18 2017-07-18 NA
19 2017-07-19 NA
20 2017-07-20 NA
解决这个问题的唯一方法是将 df 分成几个部分,更新 NA
,然后rbind
全部。
有人可以帮助我使用 tidyverse 有效地完成此操作吗?
最佳答案
我们可以使用检查元素是否为 NA 的逻辑条件来变异
“收入”列,以将 NA
替换为 0 “日期”小于或等于“最大日期”
df %>%
mutate(Revenue = replace(Revenue, is.na(Revenue) & Date <= max.date, 0))
# A tibble: 20 x 2
# Date Revenue
# <date> <dbl>
# 1 2017-07-01 500
# 2 2017-07-02 501
# 3 2017-07-03 502
# 4 2017-07-04 503
# 5 2017-07-05 504
# 6 2017-07-06 505
# 7 2017-07-07 506
# 8 2017-07-08 507
# 9 2017-07-09 508
#10 2017-07-10 509
#11 2017-07-11 510
#12 2017-07-12 0
#13 2017-07-13 0
#14 2017-07-14 0
#15 2017-07-15 0
#16 2017-07-16 0
#17 2017-07-17 NA
#18 2017-07-18 NA
#19 2017-07-19 NA
#20 2017-07-20 NA
<小时/>
可以使用 data.table
来实现,方法是指定“i”中的逻辑条件并将“Revenue”分配 (:=
) 0
library(data.table)
setDT(df)[is.na(Revenue) & Date <= max.date, Revenue := 0]
<小时/>
或者使用基础R
df$Revenue[is.na(df$Revenue) & df$Date <= max.date] <- 0
关于r - 有条件地使用replace_na,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45095789/
我的数据框是这样的: df % replace_na(list(x = 0, y = 0, z = 0)) 但是如果列数不确定怎么办? (我说“不确定”是因为我正在尝试创建一个使用 dplyr 工具即
这个问题在这里已经有了答案: How to substitute NA by 0 in 20 columns? (5 个回答) 3年前关闭。 我正在尝试用 0 填充数据中的所有 NA。有谁知道如何使用
如果可能的话,我想使用 mutate_if 和 replace_na 的某种变体替换数字列中的 NA,但无法弄清楚语法。 df # A tibble: 3 x 3 #> first second
我有兴趣用同一行中的引用值替换一行中的所有 NA。以下代码有效,但对于我的实际用例来说太慢了: df = data.frame(ref = c(1,3,4,2,5), var1 = c(NA,3,4,
我是一名优秀的程序员,十分优秀!