gpt4 book ai didi

r - 用等于0的一行替换变量的所有NA值

转载 作者:行者123 更新时间:2023-12-03 14:07:21 26 4
gpt4 key购买 nike

据我所知,用语很难说清楚,但没有一个类似的问题能回答我的问题。

我有一个data.frame如:

df1 <- data.frame(id = rep(c("a", "b","c"), each = 4),
val = c(NA, NA, NA, NA, 1, 2, 2, 3,NA,2,NA,3))

df1

id val
1 a NA
2 a NA
3 a NA
4 a NA
5 b 1
6 b 2
7 b 2
8 b 3
9 c NA
10 c 2
11 c NA
12 c 3


并且我想摆脱所有的NA值(使用filter()可以很容易地做到),但是要确保,如果这删除了所有一个id值(在这种情况下,它删除了“ a”的每个实例),那么会多出一行插入(例如)a = 0

以便:

  id val
1 a 0
2 b 1
3 b 2
4 b 2
5 b 3
6 c 2
7 c 3


显然很容易以环形方式完成此操作,但是我想知道是否有一种整洁/优雅的方法可以执行此操作。我认为tidyr :: complete()可能会有所帮助,但不能完全确定如何将其应用于此类情况

我不在乎行的顺序

干杯!

编辑:更新了更清晰的期望输出。可能会使之前提交的所需答案不太清楚

最佳答案

使用dplyr的另一个想法,

library(dplyr)

df1 %>%
group_by(id) %>%
mutate(val = ifelse(row_number() == 1 & all(is.na(val)), 0, val)) %>%
na.omit()


这使,


# A tibble: 5 x 2
# Groups: id [2]
id val
<fct> <dbl>
1 a 0
2 b 1
3 b 2
4 b 2
5 b 3

关于r - 用等于0的一行替换变量的所有NA值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54022536/

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