我正在尝试从数据框中提取值的子集以获得子集的平均值,但我无法弄清楚如何执行此操作。
我试过这个
kg_name=cat(shQuote(k_categories[1,]), "\n")
m[1] = mean(subset(dt, dt[2]==kg_name)[,1])
因此,我必须提取的值的类别位于此k_categories向量中。它们例如是一个,两个和三个。在第一行代码中,我在值中添加引号,这样我就可以得到“一”,“二”,“三”。现在,第二行尝试通过提取与第二列中的字符串“one”匹配的两列数据帧dt的值来计算均值。
如果我这样做,现在一切正常
m[1] = mean(subset(dt, dt[2]=="one")[,1])
但是,如果我从k_categories中提取类别的名称,那么我会收到此错误(我也将部分跟踪)
Error in matrix(unlist(value, recursive = FALSE, use.names = FALSE), nrow = nr, :
length of 'dimnames' [2] not equal to array extent
8 matrix(unlist(value, recursive = FALSE, use.names = FALSE), nrow = nr,
dimnames = list(rn, cn))
7 Ops.data.frame(dt[2], kg_name)
6 eval(expr, envir, enclos)
5 eval(e, x, parent.frame())
4 subset.data.frame(dt, dt[2] == kg_name)
3 subset(dt, dt[2] == kg_name)
编辑(添加dt数据框示例)
Values Categories
1 one
3 two
2 three
4 one
3 two
2 two
答案 0 :(得分:0)
这个脚本给了我平均值。
a = c("one", "two", "three", "one", "two", "two")
b = c(1, 3, 2, 4, 3, 2)
d = data.frame(values = b, categories = a)
uniques = unique(a)
for(i in 1:length(uniques))
print(mean(subset(d, categories==uniques[i])$values))
您可以将其保存为变量,而不是打印该值。我想我并没有真正理解你要做的事情......