【发布时间】:2018-06-28 00:09:11
【问题描述】:
我正在尝试将向量“意味着”合并到数据框。 我的数据框看起来像这样Data = growth
我首先使用以下命令计算了不同组的所有平均值(1 组 = 人口 + 温度 + 大小 + 复制):
means<-aggregate(TL ~ Population + Temperature + Replicat + Size + Measurement, data=growth, list=growth$Name, mean)
然后,我选择测量 1 的方法如下,因为我只对这些方法感兴趣。
meansT0<-means[which(means$Measurement=="1"),]
现在,我想将此均值向量合并到我的数据框 (=growth) 中,以便每个组的正确均值对应于数据框的右侧部分。
然后,目标是根据其所属组(以及除测量 1 之外的所有其他测量)将每个组(在测量 1 处)的平均值减去数据帧的每个元素。也许不需要将手段列添加到数据框中?你知道有什么命令可以做到这一点吗?
[27.06.18] 我制作了这个简化的数据框,希望这有助于理解。 所以,我想要的是,对于数据框中的每个个体和每个测量值(这里只有测量值 1 和测量值 2,通常我有更多),其在 MEASUREMENT 1 处所属组的平均值。
所以,如果我按组(1 组= 人口 + 温度 + 测量值)获得平均值:
means<-aggregate(TL ~ Population + Temperature + Measurement, data=growth, list=growth$Name, mean)
means
我得到了这些平均值(在这个例子中):
Population Temperature Measurement TL
JUB 15 **1** **12.00000**
JUB 20 **1** **15.66667**
JUB 15 2 17.66667
JUB 20 2 18.66667
JUB 15 3 23.66667
JUB 20 3 24.33333
我们只对 MEASUREMENT 1 的方法感兴趣。对于数据帧中的每个人,我想在 Measurement 1 处减去其所属组的平均值:在此示例中(请参阅带有 R 命令的数据帧): -对于 JUB+15+Measurement 1 组,平均值 = 12 -对于 JUB+20+Measurement 1 组,平均值 = 15.66
growth<-data.frame(Population=c("JUB", "JUB", "JUB","JUB", "JUB", "JUB","JUB", "JUB", "JUB","JUB", "JUB", "JUB","JUB", "JUB", "JUB","JUB", "JUB", "JUB"), Measurement=c("1","1","1","1","1","1","2","2","2","2","2","2", "3", "3", "3", "3", "3", "3"),Temperature=c("15","15","15","20", "20", "20","15","15","15","20", "20", "20","15","15","15","20", "20", "20"),TL=c(11,12,13,15,18,14, 16,17,20,21,19,16, 25,22,24,26,24,23), New_TL=c("11-12", "12-12", "13-12", "15-15.66", "18-15.66", "14-15.66", "16-12", "17-12", "20-12", "21-15.66", "19-15.66", "16-15.66", "25-12", "22-12", "24-12", "26-15.66", "24-15.66", "23-15.66"))
print(growth)
我希望通过这个,你可以更好地理解我想要做什么。我有很多数据,如果我必须手动执行此操作,这将花费我很多时间并增加我犯错的风险。
【问题讨论】:
-
请设置一个可重现的示例(无屏幕截图),该示例也显示所需的结果。
标签: r