R:我的数据框有 1 列和多行,有没有办法计算某些行子集的平均值?

R: My dataframe has 1 column and multiple rows, is there a way to calculate the mean for certain subsets of rows?

我下载了一个 1 列和 1000 行的数据框。数据框的组织方式是区域名称,下面是区域对应的分数。

示例:

我想计算每个区域对应的数值的平均值

因此,例如:

区域 1:1,2,3,4 的平均值

区域 2:1,2 的平均值

以此类推

我不确定如何编写脚本来执行此操作并获得输出 我有一个 table 有 2 列(区域,平均值)

以下代码与标记组开头的字符串无关,仅取决于它们不能被强制转换为数字。

首先,一个测试数据集。

df1 <- data.frame(x = c("A", 1:4, "B", 1:2, "C", 1:3))

现在群指。

y <- suppressWarnings(as.numeric(df1[[1]]))
i <- is.na(y)
j <- cumsum(i)
tapply(y[!i], j[!i], mean)
#  1   2   3 
#2.5 1.5 2.0 

这是一个基本的 R 选项

do.call(
  rbind,
  Map(
    function(v) data.frame(Region = v[1, ], Mean = mean(as.numeric(v[-1, ]))),
    split(df, cumsum(grepl("Region\s\d+", df$x)))
  )
)

这给出了

    Region Mean
1 Region 1  2.5
2 Region 2  1.5
3 Region 3  2.0

数据

df <- structure(list(x = c("Region 1", "1", "2", "3", "4", "Region 2", 
"1", "2", "Region 3", "1", "2", "3")), class = "data.frame", row.names = c(NA,
-12L))