【问题标题】:Isolate interactions across both factors and columns?隔离因子和列之间的交互?
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-27
      • 2014-02-19
      • 2012-09-06
      • 2016-11-11
      • 2016-05-15
      相关资源
      最近更新 更多