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))
我下载了一个 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))