按组组合、合并、合并行,并在不旋转的情况下用另一个值替换某个值
Combine, merge, coalesce rows by group and replace certain value by another value without pivoting
是否有 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
在 C
列到 E
学习的课程:
Merging two rows with some having missing values in R
我们可以按 'A'、'B'、summarise
across
列、order
值分组,这样 'u' 将 return 在其他值之前和 select first
元素
library(dplyr)
df %>%
group_by(A, B) %>%
summarise(across(everything(),
~ first(.[order(. != 'u')])), .groups = 'drop')
-输出
# A tibble: 5 x 5
A B C D E
<int> <chr> <chr> <chr> <chr>
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
是否有 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
在 C
列到 E
学习的课程:
Merging two rows with some having missing values in R
我们可以按 'A'、'B'、summarise
across
列、order
值分组,这样 'u' 将 return 在其他值之前和 select first
元素
library(dplyr)
df %>%
group_by(A, B) %>%
summarise(across(everything(),
~ first(.[order(. != 'u')])), .groups = 'drop')
-输出
# A tibble: 5 x 5
A B C D E
<int> <chr> <chr> <chr> <chr>
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