【发布时间】:2018-03-15 18:53:58
【问题描述】:
我有一个如下所示的数据框:
line = c(1, 2, NA, 4 ,5, NA, 7)
group = c("1.0 Group A", "2.0 Group B", "3.0 Group C", "4.0 Group D", "5.0 Group E", "6.0 Group F", "7.0 Group G")
df <- data.frame(line, group)
view(df)
line group
1 1 1.0 Group A
2 2 2.0 Group B
3 NA 3.0 Group C
4 4 4.0 Group D
5 5 5.0 Group E
6 NA 6.0 Group F
7 7 7.0 Group G
我想要做的是在“行”列中找到所有 NA 值,并在“组”列中的该行下方放置一行,表示“不适用”。这样新的数据框应该如下所示:
view(df)
line group
1 1 1.0 Group A
2 2 2.0 Group B
3 NA 3.0 Group C
4 NA Not Applicable
5 4 4.0 Group D
6 5 5.0 Group E
7 NA 6.0 Group F
8 NA Not Applicable
9 7 7.0 Group G
我正在考虑使用 ifelse 语句或使用 dplyr 中的 case_when。但我不知道如何解决。有人有什么建议吗?
谢谢!
【问题讨论】:
-
这样做有什么特别的原因吗?这不是一个非常
tidy的方法,因为您基本上是在表中插入实际上不是值的值。如果你想在这些特定的边界上做点什么,你可以创建一个索引向量;如果你想为一些可视化划分组,你可以创建一个组 id 变量。 -
谢谢@CalumYou!是的,我正在处理更大的数据,实际上需要 R 自动识别 NA 并在其下方放置一行“不适用”,而不是我手动执行。我会尝试研究索引向量。
-
这里是related question 以获取更多信息,但您的问题已概括为插入多行。而且我认为 2015 年 12 月的 dplyr 解决方案不尊重插入顺序?
标签: r