【发布时间】:2023-03-22 18:12:01
【问题描述】:
是否有tidyverse 的方式来组合同一组的行替换某些值:
我不想要pivot 解决方案!
这是我的数据框:
df <- structure(list(A = c(1L, 1L, 2L, 3L, 4L, 5L), B = c("a", "a",
"b", "c", "d", "e"), C = c("u", "t", "t", "u", "t", "t"), D = c("t",
"u", "u", "t", "u", "u"), E = c("t", "t", "u", "u", "u", "u")),
class = "data.frame", row.names = c(NA, -6L))
A B C D E
1 1 a u t t
2 1 a t u t
3 2 b t u u
4 3 c u t u
5 4 d t u u
6 5 e t u u
我想要的输出:
A B C D E
1 1 a u u t
2 2 b t u u
3 3 c u t u
4 4 d t u u
5 5 e t u u
第 1 行和第 2 行具有相同的组 1 和 a(列 A 和 B)->
这个组应该合并到一行 1 a 替换 t 由u在列@987654338 @到E
学习的经验:
combine rows in data frame containing NA to make complete row
【问题讨论】:
-
这到底是什么逻辑? “u”总是覆盖“t”?这是唯一的规则,还是您需要能够扩展得比这更大?为什么不能转动?
-
逻辑是控制覆盖参数。
-
@camille。您能否解释一下为什么要删除 tidyverse 标签。非常感谢!
-
来自tidyverse 标签信息:“如果您的问题涉及到 tidyverse 的一个或两个组件,例如 dplyr 或 ggplot2,请不要使用。使用 那些 标签,并且标记
r以获得更好的响应。除非您的问题是关于整个 tidyverse 包、它的安装或与您的系统的集成,否则请为您实际使用的包使用标签。很少使用 library(tidyverse)仅需要 library(dplyr) 时的最小可重现示例。” -
非常感谢您的解释。我知道这些信息。我遇到了以下问题:在我的解决方案中,可能需要所有属于
tidyverse的包:在这种情况下,我们可以使用dplyr、tidyr、readr和purrrat至少,也许有一些额外的辅助函数stringr或forecast。这就是我使用tidyverse的原因。基本上我没有问题可以删除。但是我在我的问题中描述的任务中挣扎了很多次。据我所知,对于行,没有一个简洁的解决方案......比如使用coalesce来表示列。
标签: r dplyr tidyverse coalesce