我在R中有以下数据帧.我创建了一个名为"Average"的新列,它取我的数据帧中前三列的平均值,但我想使用列索引(例如列2,3,4)而不是列名.有没有办法做到这一点?

library(tidyverse)

data <- structure(list(Model = c("Adjusted Compnents Model", "ARIMA", 
"STIF Model"), `2021-11-30` = c(0.2, 0.1, 0.3), `2021-12-31` = c(0.2, 
0.3, 0), `2022-01-31` = c(0.2, 0.5, 0.3), `2022-02-28` = c(0.1, 
0.3, 0.1), `2022-03-31` = c(0.1, 0.2, 0.1), `2022-04-30` = c(0.2, 
0.1, 0.1)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-3L))

data %>% 
  mutate(Average = mean(`2021-11-30`:`2022-01-31`), .after = 4)

推荐答案

我们可能需要rowMeans

library(dplyr)
data <- data %>%
  mutate(Average = rowMeans(across(`2021-11-30`:`2022-01-31`), 
      na.rm = TRUE), .after = 4)

-输出

data
# A tibble: 3 × 8
  Model                    `2021-11-30` `2021-12-31` `2022-01-31` Average `2022-02-28` `2022-03-31` `2022-04-30`
  <chr>                           <dbl>        <dbl>        <dbl>   <dbl>        <dbl>        <dbl>        <dbl>
1 Adjusted Compnents Model          0.2          0.2          0.2     0.2          0.1          0.1          0.2
2 ARIMA                             0.1          0.3          0.5     0.3          0.3          0.2          0.1
3 STIF Model                        0.3          0            0.3     0.2          0.1          0.1          0.1

关于索引,我们可以替换范围内的值(如果我们正确理解)

data %>%
  mutate(Average = rowMeans(across(2:4), 
      na.rm = TRUE), .after = 4)

R相关问答推荐

未识别时区

即使硬币没有被抛出,也要保持对其的跟踪

在R中按行按列范围查找最大值的名称

如何通过匹配R中所有可能的组合来从宽到长旋转多个列?

如何使用For-R循环在向量中找到一系列数字

在使用具有Bray-Curtis相似性的pvCluust时计算p值

远离理论值的伽马密度曲线下面积的近似

为什么函数toTitleCase不能处理english(1),而toupper可以?

按组跨多列创建伪变量

有没有办法将基于每个值中出现的两个关键字或短语的字符串向量重新编码为具有这两个值的新向量?

创建新列,其中S列的值取决于该行S值是否与其他行冗余

在使用SliderInput In Shiny(R)设置输入数据的子集时,保留一些情节痕迹

将边列表转换为路径长度列表

从矩阵创建系数图

看似重叠的剧情

文本标签 colored颜色 与FiveThirty8主题不匹配

在shiny 的Quarto文档中找不到函数renderEcharts4r

保存GggPlot对象以在不同数据集上使用

为什么我的条件ifelse recode不返回期望值?

如何转置gtsum tbl_sum对象?