为了账号安全,请及时绑定邮箱和手机立即绑定

交互表 - 与宠物和房屋的案例

交互表 - 与宠物和房屋的案例

守候你守候我 2019-08-23 10:11:34
交互表 - 与宠物和房屋的案例我有一份房屋清单和一份动物物种清单。houses = c(1,1,2,3,4,4,4,4,5,6,5)animals = c('cat','dog','cat','dog','rat', 'cat', 'spider', 'snake', 'cat', 'cat', 'rat')我正在尝试创建一个函数,该函数返回一个上三角表,指示每只宠物,它被观察到的生活在同一个房子中的次数比其他动物物种。是否有意义?对于上面的例子,表应该是这样的(希望没有错!):    dog   rat   spider   snakecat  1     2      1        1      dog        0      0        0rat               1        1spider                     1注意:此函数应适用于任何两个相同长度的向量,无论它们是否包含数字或字符串
查看完整描述

2 回答

?
料青山看我应如是

TA贡献1772条经验 获得超7个赞

使用table和crossprod:


out <- crossprod(table(houses, animals))

out[lower.tri(out, diag=TRUE)] <- NA

out

#         animals

# animals  cat dog rat snake spider

#   cat     NA   1   2     1      1

#   dog     NA  NA   0     0      0

#   rat     NA  NA  NA     1      1

#   snake   NA  NA  NA    NA      1

#   spider  NA  NA  NA    NA     NA

由于输出是a,matrix您可以NA直接在print以下位置禁止打印值:


print(out,na.print="")

#         animals

# animals  cat dog rat snake spider

#   cat          1   2     1      1

#   dog              0     0      0

#   rat                    1      1

#   snake                         1

#   spider                         


查看完整回答
反对 回复 2019-08-23
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

只需添加一个稀疏的替代方案,以防万一在制表期间可以减少任何内存占用:Matrix::crossprod(xtabs(~ houses + animals, sparse = TRUE)) 

查看完整回答
反对 回复 2019-08-23
  • 2 回答
  • 0 关注
  • 509 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信