gpt4 book ai didi

r - 在数据框中的值之间填写 NA

转载 作者:行者123 更新时间:2023-12-02 09:11:27 25 4
gpt4 key购买 nike

我有一个示例数据集

newdata<-data.frame(Tow.y=c(21,"NA","NA","NA","NA","NA",22,"NA","NA","NA","NA","NA",23,"NA","NA"),Tow=c("NA","NA","NA",21,"NA","NA","NA","NA",22,"NA","NA","NA","NA","NA",23))
newdata$Tow.y<-as.numeric(as.character(newdata$Tow.y))
newdata$Tow<-as.numeric(as.character(newdata$Tow))

newdata1<-newdata %>%
mutate(Station = coalesce(Tow.y, Tow))
newdata1

生成的代码产生:

Tow.y Tow Station
1 21 NA 21
2 NA NA NA
3 NA NA NA
4 NA 21 21
5 NA NA NA
6 NA NA NA
7 22 NA 22
8 NA NA NA
9 NA 22 22
10 NA NA NA
11 NA NA NA
12 NA NA NA
13 23 NA 23
14 NA NA NA
15 NA 23 23

我想在 Station 中的唯一值之间填写 NA。因此,两个 21 值之间的 NA 将为 21,22 之间的 NA 将为 22,依此类推。连续数字之间的 NA 仍将是 NA。

像这样:

  Tow.y Tow Station
1 21 NA 21
2 NA NA 21
3 NA NA 21
4 NA 21 21
5 NA NA NA
6 NA NA NA
7 22 NA 22
8 NA NA 22
9 NA 22 22
10 NA NA NA
11 NA NA NA
12 NA NA NA
13 23 NA 23
14 NA NA 23
15 NA 23 23

我已经尝试了 Zoo 包中的 na.locf 函数,但是它替换了所有 NA 值。

newdata1$Station2<-na.locf(newdata1$Station,na.rm = F)

我看过的其他示例表明您可以将 na.locf 与组变量一起使用,但我没有完整的数据集分组变量。有谁有办法在我需要填写的地方填写 NA。

最佳答案

这是一个好方法。我留下了辅助列来演示它是如何工作的,但您可以使用 select 轻松删除它们。

newdata1 %>%
mutate(from_first = zoo::na.locf(Station, na.rm = FALSE),
from_last = zoo::na.locf(Station, na.rm = FALSE, fromLast = TRUE),
result = if_else(from_first == from_last, from_first, Station))
# Tow.y Tow Station from_first from_last result
# 1 21 NA 21 21 21 21
# 2 NA NA NA 21 21 21
# 3 NA NA NA 21 21 21
# 4 NA 21 21 21 21 21
# 5 NA NA NA 21 22 NA
# 6 NA NA NA 21 22 NA
# 7 22 NA 22 22 22 22
# 8 NA NA NA 22 22 22
# 9 NA 22 22 22 22 22
# 10 NA NA NA 22 23 NA
# 11 NA NA NA 22 23 NA
# 12 NA NA NA 22 23 NA
# 13 23 NA 23 23 23 23
# 14 NA NA NA 23 23 23
# 15 NA 23 23 23 23 23

关于r - 在数据框中的值之间填写 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51504623/

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