gpt4 book ai didi

用 NA 替换值,其中日期大于......用 R

转载 作者:行者123 更新时间:2023-12-05 08:27:56 24 4
gpt4 key购买 nike

我试图创建精确的示例数据但失败了,这是尝试:

data1 <- data.frame(date=as.Date(as.character(c("01-03-2015","01-04-2015","01-05-2015")),"%d-%m-%Y"), Val=rnorm(3,1,1))
data2 <- data.frame(date=c(NA,"",NA), Val=rnorm(3,1,1))
data3 <- data.frame(date=as.Date(as.character(c("01-09-2015","01-10-2015","01-11-2015")),"%d-%m-%Y"), Val=rnorm(3,1,1))

do.call(cbind, list(data1,data2,data3))

示例数据应如下所示(我尝试使用 rbind 进行绑定(bind),但由于未知原因而失败了)。

        date        Val 
1 2015-03-01 -0.8496063
2 2015-04-01 1.5014609
3 2015-05-01 0.7923492
4 <NA> 1.6646475
5 1.1976965 # empty string in column date
6 <NA> 0.9105403 # NA in column date
7 2015-09-01 0.6214811
8 2015-10-01 1.1314259

我想做的是用 NA 替换列 Val 的所有值,其中在日期列中,日期大于 2015-09-01

这里不完全是我的示例数据(无论是空字符串还是 NA 都很重要,这些属性必须保持不变)。

Sampdata <- data.frame(date=c(as.Date(as.character(c("01-03-2015","01-04-2015","01-05-2015")),"%d-%m-%Y"),"NA","NA","NA",
as.Date(as.character(c("01-08-2015","01-09-2015")),"%d-%m-%Y")), Val=rnorm(8,1,1))


Sampdata$Val <- ifelse(Sampdata$date>=(as.Date(as.character("2015-09-01"))),NA,Sampdata$Val)

上述解决方案失败了,因为它还用 NA 替换了列日期包含 NA 和空字符串的那些行。

所需的解决方案:

            date        Val 
1 2015-03-01 -0.8496063
2 2015-04-01 1.5014609
3 2015-05-01 0.7923492
4 <NA> 1.6646475
5 1.1976965
6 <NA> 0.9105403
7 2015-09-01 NA
8 2015-10-01 NA

编辑:

所以让我们将样本日期更正为:(没有空字符串)

Sampdata <- data.frame(date=c(as.Date(as.character(c("01-03-2015","01-04-2015","01-05-2015")),"%d-%m-%Y"),"NA","NA","NA",
as.Date(as.character(c("01-08-2015","01-09-2015")),"%d-%m-%Y")), Val=rnorm(8,1,1))

建议的解决方案:

indx <- as.Date(Sampdata$date) >= '2015-09-01'
Sampdata$Val[indx & !is.na(indx)] <- NA
Sampdata

在我的电脑上给出这个:

        date        Val
1 2015-03-01 1.4437853
2 2015-04-01 -0.1695267
3 2015-05-01 0.5083815
4 <NA> NA
5 <NA> NA
6 <NA> NA
7 2015-08-01 0.3026487
8 2015-09-01 NA

最佳答案

您可以将 akrun 的两个步骤合并为一行

df$Val[df$date >= '2015-09-01'] <- NA

关于用 NA 替换值,其中日期大于......用 R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27376687/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com