我有一个R tibble df
。
df
id gender age
1 M young
1 M middle
1 M old
1 F young
1 F middle
1 F old
2 M young
...
4 NA NA
5 NA NA
6 M young
...
对于每个id
,gender
由M
、F
组成,而age
由young
、middle
、old
组成。换句话说,每个id
应该有六个不同的条目。有些id
与NA
在随后的两列中。
我的目标是将gender
和age
中的所有NA
填充到上述6个组合中。
例如,id == 4
和id == 5
当前都有一行NA
s,但我希望id
s都有6行gender
和age
组合,类似于id == 1
。
我熟悉执行迭代的tidyr::crossing
,也熟悉mutate_at(..., ~ replace_na)
,但是在我的管道中应用它们中的任何一个都没有返回我想要的结果。
任何见解赞赏。
2条答案
按热度按时间s1ag04yj1#
您可以将
complete
与nesting
一起使用,并删除NA行,如下所示:创建于2023-03-23带有reprex v2.0.2
使用数据:
vmpqdwk32#
如果你想坚持使用基本的R函数,你可以这样做:
假设这是你的数据:
您可以使用
expand.grid()
和unique()
来提供所有组合。接下来,要清除和删除NA值,可以用途:
现在df 3有你正在寻找的!