gpt4 book ai didi

R:根据列名部分匹配计算行均值

转载 作者:行者123 更新时间:2023-12-04 18:59:51 27 4
gpt4 key购买 nike

我有一张看起来像这样的表:

  er er.1 as as.1 as.2 rt op
a 1 6 90 8 6 4 87
b 1 8 56 7 5 5 9
c 8 7 6 4 5 9 6
d 1 0 8 6 4 3 6
e 9 7 2 4 3 89 7

我想计算名称部分匹配的列之间的行均值,得到如下结果:
    er   as           rt     op
a 3.5 34.66666667 4 87
b 4.5 22.66666667 5 9
c 7.5 5 9 6
d 0.5 6 3 6
e 8 3 89 7

我确实在这个问题上找到了一些有用的提示:

Calculate row means based on (partial) matching column names

但它似乎对我不起作用。以下是我使用的命令:
test <- read.table("test.txt", header=TRUE, row.names=1)

colnames <- c("er", "er", "as", "as", "as", "rt", "op")

means <-sapply(colnames, function(x) rowMeans(test [, grep(x, names(test))] ) )

最后一个命令给了我以下错误:
Error in rowMeans(test[, grep(x, names(test))]) : 
'x' must be an array of at least two dimensions

这是我的数据框的 dput:
structure(list(er = c(1L, 1L, 8L, 1L, 9L), er.1 = c(6L, 8L, 7L, 
0L, 7L), as = c(90L, 56L, 6L, 8L, 2L), as.1 = c(8L, 7L, 4L, 6L,
4L), as.2 = c(6L, 5L, 5L, 4L, 3L), rt = c(4L, 5L, 9L, 3L, 89L
), op = c(87L, 9L, 6L, 6L, 7L)), .Names = c("er", "er.1", "as",
"as.1", "as.2", "rt", "op"), class = "data.frame", row.names = c("a",
"b", "c", "d", "e"))

知道为什么我会收到此错误以及如何解决此问题吗?

谢谢!

最佳答案

我们可以split并获得 rowMeans

sapply(split.default(df1, sub("\\..*", "", names(df1))), rowMeans)
# as er op rt
#a 34.66667 3.5 87 4
#b 22.66667 4.5 9 5
#c 5.00000 7.5 6 9
#d 6.00000 0.5 6 3
#e 3.00000 8.0 7 89

关于R:根据列名部分匹配计算行均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40246107/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com