如果给定条件成立,我想用固定日期替换给定列(日期格式)中的NA值.

在下面的例子中,如果条件a==4成立,我想用"2012-07-01"替换dt列中的NA个值.我正在寻找最简单的方法来做到这一点,无论是dplyr还是data.table.

> df1 <- data.table(a = c(1, 2, 3, 4),
+                  dt = as.Date(c("2012-06-01", "2012-07-01", NA, NA)))
> df1
   a         dt
1: 1 2012-06-01
2: 2 2012-07-01
3: 3       <NA>
4: 4       <NA>

推荐答案

data.table

df1[a == 4 & is.na(dt), dt := as.Date("2012-07-01")]
       a         dt
   <num>     <Date>
1:     1 2012-06-01
2:     2 2012-07-01
3:     3       <NA>
4:     4 2012-07-01

在基数R中,为了完整性:

df1[df1$a == 4 & is.na(df1$dt), "dt"] <- "2012-07-01"

R相关问答推荐

从API中抓取R数据SON

基于shiny 应用程序中的日期范围子集xts索引

向gggplot 2中的数据和轴标签添加大写和星号

如何自定义Shapviz图?

基于多列将值链接到NA

如何动态更新selectizeInput?

如何使用tryCatch执行语句并忽略警告?

使用rest从header(h2,h3,table)提取分层信息

如何识别倒排的行并在R中删除它们?

TreeNode打印 twig 并为其上色

从R中发出的咕噜声中的BUG?

R如何将列名转换为更好的年和月格式

R中的类别比较

根据r中另一个文本列中给定的范围对各列求和

是否可以将线性模型的p值添加到tbl_summary中

如何更改包中函数中的参数?

如何计算多个变量的百分比与总和的百分比?

使用卡环从R中的列中删除单位(&C)

通过分析特定列中的字符串在数据框中创建新的行和列

将`magick`对象转换为原始向量