我试图通过添加数字行值和防止第二次出现分组变量的字符值来总结数据帧中的行。
我的数据框架如下:
df <- data.frame(
Season = c('Summer', 'Fall', 'Fall', 'Winter','Spring', 'Spring'),
Number = c(1,2,2,6,7,2),
Character = c('1s', '2s', 's', '1s', '3s', 'q')
)
df
Season Number Character
1 Summer 1 1s
2 Fall 2 2s
3 Fall 2 s
4 Winter 6 1s
5 Spring 7 3s
6 Spring 2 q
我试图将数据汇总成下面列出的格式,但是dplyr
的汇总函数在非数字列中不能很好地工作。
这是我的预期输出..。
Season Number Character
1 Summer 1 1s
2 Fall 4 s
4 Winter 6 1s
5 Spring 9 q
发布于 2022-11-28 20:31:10
您可以在[[2]]
中使用summarize()
。您还必须处理只有一行的组。
library(dplyr)
df %>%
group_by(Season) %>%
summarize(
Number = sum(Number),
Character = ifelse(length(Character) > 1, Character[[2]], Character)
) %>%
ungroup()
# A tibble: 4 × 3
Season Number Character
<chr> <dbl> <chr>
1 Fall 4 s
2 Spring 9 q
3 Summer 1 1s
4 Winter 6 1s
发布于 2022-11-28 20:38:40
一种方法是使用last
来选择正确的字符串,因为它总是这样排序的。
library(dplyr)
df %>%
group_by(Season) %>%
summarize(across(Number:Character, ~ ifelse(is.numeric(.x), sum(.x), last(.x))))
# A tibble: 4 × 3
Season Number Character
<chr> <dbl> <chr>
1 Fall 4 s
2 Spring 9 q
3 Summer 1 1s
4 Winter 6 1s
https://stackoverflow.com/questions/74606086
复制相似问题