R:在多个文件中对系数的级别进行分组
我是个新手,在计算平均数之前,我很难将一个因子的多个层次进行分组。这个问题很复杂,因为我要对数百个文件执行此操作,这些文件具有需要分组的不同级别的因素。我在以前的文章中看到了如何使用levels()解决单个级别的分组问题,但是我的数据对于这种方法来说太多变了 基本上,我想计算一个因子的多个层次的个体平均值和总体平均值。例如,我想计算列Status中存在的以下每个因素的每个物种的平均值:Crypt1、Crypt2、Crypt3、Native、Intro,然后计算Crypt物种的总体平均值(包括Crypt1、Crypt2和Crypt3,但不包括Native或Intro)。然而,一个物种要么有多个级别的隐窝(可变,最多8个),要么有原生和内含,所有物种在每个级别上的平均值最终都被纳入同一汇总表 例如:R:在多个文件中对系数的级别进行分组,r,aggregate,plyr,R,Aggregate,Plyr,我是个新手,在计算平均数之前,我很难将一个因子的多个层次进行分组。这个问题很复杂,因为我要对数百个文件执行此操作,这些文件具有需要分组的不同级别的因素。我在以前的文章中看到了如何使用levels()解决单个级别的分组问题,但是我的数据对于这种方法来说太多变了 基本上,我想计算一个因子的多个层次的个体平均值和总体平均值。例如,我想计算列Status中存在的以下每个因素的每个物种的平均值:Crypt1、Crypt2、Crypt3、Native、Intro,然后计算Crypt物种的总体平均值(包括Cr
Species Status Value
A Crypt1 5
A Crypt1 6
A Crypt2 4
A Crypt2 8
A Crypt3 10
A Crypt3 50
B Native 2
B Native 9
B Intro 9
B Intro 10
我想我可以使用每个因子的第一个字母来将Crypt因子组合在一起,但我很难找到第一个字母,因为它们是因子,而不是字符串,我不知道如何在它们之间转换。我最终使用aggregate()计算平均值,我可以得到每个因子的单独平均值,但不能得到分组因子的平均值。
任何想法都将不胜感激,谢谢 对于个人而言意味着:
# assuming your data is in data.frame = df
require(plyr)
df.1 <- ddply(df, .(Species, Status), summarise, ind.m.Value = mean(Value))
> df.1
# Species Status ind.m.Value
# 1 A Crypt1 5.5
# 2 A Crypt2 6.0
# 3 A Crypt3 30.0
# 4 B Intro 9.5
# 5 B Native 5.5
这就是你所期待的吗?这里有一个替代方案。从概念上讲,它与Arun的答案相同,但它坚持使用BaseR中的函数,并且在某种程度上保持了您的工作区和原始数据的整洁 我假设我们从一个名为“temp”的
data.frame
开始,我们想为单个和分组平均值创建两个新的data.frame
s,“T1”和“T2”
# Verify that you don't have T1 and T2 in your workspace
ls(pattern = "T[1|2]")
# character(0)
# Use `with` to generate T1 (individual means)
# and to generate T2 (group means)
with(temp, {
T1 <<- aggregate(Value ~ Species + Status, temp, mean)
temp$Status <- gsub("\\d+$", "", Status)
T2 <<- aggregate(Value ~ Species + Status, temp, mean)
})
# Now they're there!
ls(pattern = "T[1|2]")
# [1] "T1" "T2"
回顾一下使用命令执行的,我们似乎已经更改了“Status”列的值。但是,这只是在使用和
创建的环境中进行的。原始的数据帧与启动时相同
temp
# Species Status Value
# 1 A Crypt1 5
# 2 A Crypt1 6
# 3 A Crypt2 4
# 4 A Crypt2 8
# 5 A Crypt3 10
# 6 A Crypt3 50
# 7 B Native 2
# 8 B Native 9
# 9 B Intro 9
# 10 B Intro 10
T1
# Species Status Value
# 1 A Crypt1 5.5
# 2 A Crypt2 6.0
# 3 A Crypt3 30.0
# 4 B Intro 9.5
# 5 B Native 5.5
T2
# Species Status Value
# 1 A Crypt 13.83333
# 2 B Intro 9.50000
# 3 B Native 5.50000
temp
# Species Status Value
# 1 A Crypt1 5
# 2 A Crypt1 6
# 3 A Crypt2 4
# 4 A Crypt2 8
# 5 A Crypt3 10
# 6 A Crypt3 50
# 7 B Native 2
# 8 B Native 9
# 9 B Intro 9
# 10 B Intro 10