【发布时间】:2011-06-30 11:19:35
【问题描述】:
刚学R。
给定 R 中的 data.frame 具有两列,一列数字和一列分类,我如何提取 data.frame 的一部分以供使用?
str(ex0331)
'data.frame': 36 obs. of 2 variables:
$ Iron : num 0.71 1.66 2.01 2.16 2.42 ...
$ Supplement: Factor w/ 2 levels "Fe3","Fe4": 1 1 1 1 1 1 1 1 1 1 ...
基本上,我需要能够分别对这两个因素进行操作;即我需要能够通过Supplement 类型(Fe3 或Fe4)单独确定铁保留率的长度/平均值/标准差等。
最简单的方法是什么?
我知道by() 命令。例如,以下得到了我需要的一些东西:
by(ex0331, ex0331$Supplement, summary)
ex0331$Supplement: Fe3
Iron Supplement
Min. :0.710 Fe3:18
1st Qu.:2.420 Fe4: 0
Median :3.475
Mean :3.699
3rd Qu.:4.472
Max. :8.240
------------------------------------------------------------
ex0331$Supplement: Fe4
Iron Supplement
Min. : 2.200 Fe3: 0
1st Qu.: 3.892 Fe4:18
Median : 5.750
Mean : 5.937
3rd Qu.: 6.970
Max. :12.450
但我需要更多的灵活性。例如,我需要应用axis 命令,或按组应用log() 函数。我确信有一种简单的方法可以做到这一点;我只是没看到。我看到的所有data.frame 操作文档都是针对数字变量而不是分类变量。
【问题讨论】:
-
不清楚您所说的“
log()按组函数”是什么意思——log()不是汇总函数,而mean()、sd()是汇总函数(即它们产生一个向量输入的结果)。对于像log()这样的函数,您可能只是想使用日志函数转换Iron变量?或者,也许您想获取log(Iron)数量中的mean()?如果您只是在寻找另一列LogIron,则无需按Supplement分组——您只需将Iron列中的每个条目转换为Log(Iron)...请参阅下面的编辑。
标签: r statistics dataframe