首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何总结数据帧中的行,并避免分组变量第二次出现字符值?

如何总结数据帧中的行,并避免分组变量第二次出现字符值?
EN

Stack Overflow用户
提问于 2022-11-28 20:23:18
回答 2查看 30关注 0票数 0

我试图通过添加数字行值和防止第二次出现分组变量的字符值来总结数据帧中的行。

我的数据框架如下:

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
  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的汇总函数在非数字列中不能很好地工作。

这是我的预期输出..。

代码语言:javascript
运行
复制
  Season Number Character
1 Summer      1        1s
2   Fall      4        s
4 Winter      6        1s
5 Spring      9        q
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-28 20:31:10

您可以在[[2]]中使用summarize()。您还必须处理只有一行的组。

代码语言:javascript
运行
复制
library(dplyr)

df %>%
  group_by(Season) %>%
  summarize(
    Number = sum(Number),
    Character = ifelse(length(Character) > 1, Character[[2]], Character)
  ) %>%
  ungroup()
代码语言:javascript
运行
复制
# 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       
票数 2
EN

Stack Overflow用户

发布于 2022-11-28 20:38:40

一种方法是使用last来选择正确的字符串,因为它总是这样排序的。

代码语言:javascript
运行
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74606086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档