我想有一个分类变量(行向量)的每个级别的频率表示一组93种草本植物的生态类型(3级:H,F,T),用于观察到的物种存在(= 1) (3个级别:A,B,C),栖息地(3个级别:1,2,3,4)和年份(3个级别:1,2,3) .
我知道程序是通过tapply()传递的,但是杂乱的东西来自逻辑运算符,用于连接当前物种(= 1)的分类变量(H,F,T)的水平,通过组合对所有物种进行调节列因子 .
这可以通过一个12 x 3列联表来概括,该表列出了每个站点(3)和栖息地(4)的每种生态类型(3)的数量 .
我的数据(每个栖息地包含20行):每个物种(Sp1到Sp93)0表示缺席,1表示现在 . 矢量“类型”包含每个物种的生态类型 .
现场,人居,新年,SP1,SP2,SP3,SP4,SP5,SP6,...,SP93
type = c(H,H,F,T,F,T,H,...... T)长度为93的#向量
先感谢您 .
我希望这有助于更好地描述我的数据对象 .
data = read.csv(file =“Veg_06.csv”,header = TRUE)data = data [1:240,-c(1,4:7)]
Ilot #Factory w / 3 levels“A”,“B”,“C”:1 1 1 1 1 1 1 1 1 1 ...每个级别有4个子级别(来自“Site”),每个级别有20行,加起来到80行的水平 .
网站#因子w / 4级别“Am”,“Av”,“CP”,“CS”:2 2 2 2 2 2 2 2 2 2 ...
Sp#int [1:240] 0 0 0 0 0 0 0 0 0 0 ...“0”或“1”表示物种不存在或存在 .
蔬菜#因子w / 3水平“H”,“F”,“T”:3 3 2 2 3 1 2 1 2 1 ...表示物种类型的分类因子 .
2 回答
首先,我会推荐http://vita.had.co.nz/papers/tidy-data.pdf,Hadley Wickham关于Tidy Data的论文,关于如何组织数据更适合分析的一些想法 . 实质上,我们将每一行视为单一观察 .
听起来基本上,你的数据是
year
,site
,habitat
,quadrant
(?也许line
,从描述中不确定)的集合,species
观察点是在该地点,栖息地,象限和年观察到的物种 . 为简单起见,如果存在物种,则存在一行 .此外,还有
type
的概念,它与每个物种有关 .分析和列联表
撇开如何将数据转换为此表单的问题,让我们假设我们拥有上述表单中的数据 .
让我们拿一个小样本和一个大样本
我们可以使用
ftable
函数将其转换为我们想要的状态,12x4列联表,如如果它出现在场地/栖息地混合物的两个不同象限中,这将计算相同物种两次 . 我们可以丢弃栖息地并__16520_ -ify来统计所有这些栖息地
转换(整理源数据)
为了转换数据,因为它在这样的形式中很容易在vanilla R.使用
tidyr
包它变得更容易(reshape
也做非常相似的事情)在这里,我假设您的数据看起来像是合理的
现在您可以继续进行上述分析 .
合并物种类型数据
仔细观察你的描述,我想你也想要合并一个物种类型信息的平行向量 .
现在,您可以使用上面的
subset
,unique
和ftable
方法获取所需的数据 .假设你有一个数据框(其中包括)名为“sites”,“habitats”,“years”的列:
然后,这将为您提供一个额外的因子模式列,用于对每行的各个级别进行编码 .
如果您想要非填充级别,则不执行任何其他操作 . 如果您想要没有实例的可能级别,请使用drop = TRUE . 然后,您可以在三个分类变量的各个级别内分析这些 .