隔离因素和列的相互作用?

时间:2017-11-04 22:55:43

标签: r

我是新来的,并且已经搜索了很多个小时,所以如果在其他地方得到解答并且可以更好地制定,我很抱歉。我想根据列中其他列的因素的相互作用来区分计数,这样我就可以对计数进行一些分析。这是一个寄生虫计数的玩具数据集,每个宿主有两个分类水平。两个维度的数据集都要大得多。

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
     count hostclass hostspecies parclass parspecies
  1 1哺乳动物人绦虫1   2 2哺乳动物人类吸虫fluke1
  3 1哺乳动物人类吸虫fluke1
  4 2哺乳动物狗吸虫fluke1
  5 1哺乳动物狗吸虫fluke2

我可以根据两列中的交互将数据框拆分成一个列表,然后隔离计数:

Inter <- split(df, with(df, interaction(df$hostclass, df$parspecies)), drop = TRUE)  
cnts <- lapply(Inter,'[[',1)

但我想为宿主和寄生虫分组的每次互动做这件事:
1)hostpecies-parspecies;
2)hostspecies-parclass;
3)hostclass-parspecies(上面的例子);
4)hostclass-parclass。

换句话说,我希望两列中的因子相互作用,并扩展到所有主机和寄生虫列的所有交互。

理想情况下,输出看起来像cnts,只会更长,因为它将包括上面1到4中列出的所有交互。 感谢您提供任何帮助!

1 个答案:

答案 0 :(得分:0)

dplyr中,您可以在分组(n())列上使用计数(group_by)