R 是否可以创建一行,其中包含某些列的总计和其他列的平均值?

R 是否可以创建一行,其中包含某些列的总计和其他列的平均值?,r,R,我有一个处理时间序列数据的数据框架,其中一些列表示数量,一些列表示百分比。我想要一行来总结每一列,但显然,对我来说,对包含百分比的列求和并不是特别有用 以下是一个数据帧示例: date一个选项是选择数值列select_if,然后使用mutate_if,获取所有值均小于1的列的平均值,在下一步中,对任何值大于1的列求和。免责声明-OP表示没有列名模式或索引,这是OP给出的可能逻辑之一 library(tidyverse) df %>% select_if(is.numeric) %&g

我有一个处理时间序列数据的数据框架,其中一些列表示数量,一些列表示百分比。我想要一行来总结每一列,但显然,对我来说,对包含百分比的列求和并不是特别有用

以下是一个数据帧示例:


date一个选项是选择数值列select_if,然后使用mutate_if,获取所有值均小于1的列的平均值,在下一步中,对任何值大于1的列求和。免责声明-OP表示没有列名模式或索引,这是OP给出的可能逻辑之一

library(tidyverse)
df %>% 
  select_if(is.numeric) %>%
  mutate_if(~ all(.x < 1), mean) %>%
  mutate_if(~ any(.x > 1), sum) %>% 
  slice(1) %>%
  bind_rows(df, .) %>%
  mutate(name = replace(as.character(name), n(), "Other"))
#         date  name amt1 amt2  percent1 amt3  percent2
#1 2019-04-27   sam    3    4 0.2500000   13 0.5400000
#2 2019-04-28   sam    6    2 0.7000000    7 0.4800000
#3 2019-05-01   sam    2    7 0.4200000    4 0.7700000
#4       <NA> Other   11   13 0.4566667   24 0.5966667

一个选项是选择数值列select_if,然后使用mutate_if,获取所有值均小于1的列的平均值,在下一步中,对任何值大于1的列求和。免责声明-OP表示没有列名模式或索引,这是OP给出的可能逻辑之一

library(tidyverse)
df %>% 
  select_if(is.numeric) %>%
  mutate_if(~ all(.x < 1), mean) %>%
  mutate_if(~ any(.x > 1), sum) %>% 
  slice(1) %>%
  bind_rows(df, .) %>%
  mutate(name = replace(as.character(name), n(), "Other"))
#         date  name amt1 amt2  percent1 amt3  percent2
#1 2019-04-27   sam    3    4 0.2500000   13 0.5400000
#2 2019-04-28   sam    6    2 0.7000000    7 0.4800000
#3 2019-05-01   sam    2    7 0.4200000    4 0.7700000
#4       <NA> Other   11   13 0.4566667   24 0.5966667


您想要一行还是两列?好的,是整数类型的amt列和double类型的percent列,还是两者都是数字?我在找一行。两者都是数字,若“amt”中有小数,那个么用一种方式来表示。就您提供的示例而言,情况并非如此。如果原始数据中有浮点数,则很难将其与百分比区分开来。或者另一个想法是百分比在0到1之间。那是我的名字吗case@akrun所有amt值都是整数,如果这使解决方案更简单,则可以是整数。百分比都在0-1之间,是的。道歉,如果这是非常基本的。我是一个完全的初学者你想要一行还是两列?好的,是整数类型的amt列和double类型的percent列,还是两者都是数字?我在找一行。两者都是数字,若“amt”中有小数,那个么用一种方式来表示。就您提供的示例而言,情况并非如此。如果原始数据中有浮点数,则很难将其与百分比区分开来。或者另一个想法是百分比在0到1之间。那是我的名字吗case@akrun所有amt值都是整数,如果这使解决方案更简单,则可以是整数。百分比都在0-1之间,是的。道歉,如果这是非常基本的。我是一个完全的初学者啊,这是我的疏忽。我的实际数据帧要大得多,而且列名中没有模式。@AlexSheppard是否会有像1:5那样的列索引将是“amt”列?@AlexSheppard是不是因为列名中没有模式,相邻列中没有完全随机的相似性,所以要创建一个自动查找-可能是“金额”和其他“百分比”列?@AlexSheppard请澄清是否可以。是的,基本上我收到的数据集是完全随机的。它们不是相邻的,名称上没有图案。如果不重组数据框架,使金额相邻,百分比相邻,这是不可能的,那么我愿意接受涉及该结构的解决方案。啊,这是我的疏忽。我的实际数据帧要大得多,而且列名中没有模式。@AlexSheppard是否会有像1:5那样的列索引将是“amt”列?@AlexSheppard是不是因为列名中没有模式,相邻列中没有完全随机的相似性,所以要创建一个自动查找-可能是“金额”和其他“百分比”列?@AlexSheppard请澄清是否可以。是的,基本上我收到的数据集是完全随机的。它们不是相邻的,名称上没有图案。如果不重新构造数据帧,使数量相邻,百分比相邻,这是不可能的,那么我愿意接受涉及该结构的解决方案。