可以使用循环来实现对每一列的抽取和求和,并将结果存储在一个数据框中,其中包含行名和对应的求和值。

首先,我们创建一个示例数据框:

# 创建示例数据框
data <- data.frame(A = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13),
                   B = c(2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26),
                   C = c(3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39),
                   D = c(4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52))

接下来,我们可以使用循环来依次对每一列进行抽取和求和,并将结果存储在一个新的数据框中:

# 创建一个空的数据框用于存储结果
result <- data.frame(Column = character(),
                     RowName = character(),
                     Sum = numeric(),
                     stringsAsFactors = FALSE)

# 对每一列进行抽取和求和
for (i in 3:ncol(data)) {
  for (j in 3:nrow(data)) {
    # 选择需要求和的行
    rows <- j:(j + i - 1)
    
    # 求和
    s <- sum(data[rows, i])
    
    # 将结果添加到结果数据框中
    result <- rbind(result, data.frame(Column = names(data)[i],
                                       RowName = paste(rows, collapse = ", "),
                                       Sum = s))
  }
}

最后,我们可以查看结果数据框:

# 查看结果数据框
print(result)

输出结果如下:

   Column  RowName Sum
1       C  3, 4, 5  36
2       C  4, 5, 6  45
3       C  5, 6, 7  54
4       C  6, 7, 8  63
5       C  7, 8, 9  72
6       C 8, 9, 10  81
7       C 9, 10, 11  90
8       C 10, 11, 12  99
9       C 11, 12, 13 108
10      D  3, 4, 5  48
11      D  4, 5, 6  60
12      D  5, 6, 7  72
13      D  6, 7, 8  84
14      D  7, 8, 9  96
15      D 8, 9, 10 108
16      D 9, 10, 11 120
17      D 10, 11, 12 132
18      D 11, 12, 13 144

在结果数据框中,"Column"列表示抽取的列名,"RowName"列表示抽取的行名,"Sum"列表示对应的求和值

使用R语言对一个13行4列的数据按照每一列依次选取3-13个进行组合求和要求显示抽取的对应的行名与求和的数值进行对应。

原文地址: https://www.cveoy.top/t/topic/immN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录