【发布时间】:2017-11-04 22:55:43
【问题描述】:
我是新来的,已经搜索了好几个小时,所以如果在其他地方回答了这个问题并且可以更好地表述,我很抱歉。我想根据一列和跨其他列的因素的相互作用来隔离计数,以便我可以对计数进行一些分析。这是一个玩具数据集,其中包含宿主中寄生虫的数量,每个都有两个分类级别。数据集在两个维度上都要大得多。
df <- setNames(data.frame(matrix(ncol = 5, nrow = 16)), c("count", "hostclass","hostspecies", "parclass","parspecies"))
df$count <- c(1,2,1,2,1,1,2,3,5,1,2,3,4,1,2,3)
df$hostclass <- c(rep("mammal",8),rep("bird",8))
df$parclass <- c("cestode",rep("trematode",5), rep("arachnid",6),rep("cestode",4))
df$hostspecies <- c(rep("human",3),rep("dog",3),rep("cat",2), rep("crow",4),rep("duck",4))
df$parspecies <- c("worm1",rep("fluke1",3), rep("fluke2",2), rep("tick1", 3), rep("tick2",3),rep("worm2",4))
这是一些玩具数据:
df
计数宿主类宿主物种parclass parspecies
1 1 哺乳动物人类绦虫1
2 2 哺乳动物人类吸虫吸虫1
3 1 哺乳动物人类吸虫吸虫1
4 2 哺乳动物狗吸虫吸虫1
5 1 哺乳动物狗吸虫吸虫2
我可以根据两列的交互将数据框拆分成一个列表,然后隔离计数:
Inter <- split(df, with(df, interaction(df$hostclass, df$parspecies)), drop = TRUE)
cnts <- lapply(Inter,'[[',1)
但我想为宿主和寄生虫分组的每次交互执行此操作:
1) hostspecies-parspecies;
2) hostspecies-parclass;
3) hostclass-parspecies(上例);
4) 主机类-parclass。
换句话说,我想把两个列中的因素的相互作用,并扩展到所有宿主和寄生虫列的所有相互作用。
理想情况下,输出看起来像 cnts,只是更长,因为它包括上面 1 到 4 中列出的所有交互。 感谢您提供的任何帮助!
【问题讨论】:
标签: r