【问题标题】:How I can get the mean of binary combination?如何获得二进制组合的平均值?
【发布时间】:2014-08-06 00:59:46
【问题描述】:

我的数据如上所示。我有 9 个二进制变量,9 个二进制变量可以有 27 种组合。我想根据 27 种组合获得 raltv 的总和或平均值。
换句话说,我想获得 3 个 3X3 表,并且表的元素是每个组合的平均值 (raltv) (或总和 (raltv))。
此外,我还想在每个组合中频率值。

【问题讨论】:

  • 抱歉。从风险(高、低、中)、xtran(高、低、中)和兴趣(高、低、中)。我们有 27 种组合。请帮帮我。
  • @Frank,实际上我认为这将是 2^9 或 512 种可能的组合。我认为 OP 有 3^3 = 27 种可能性,因为您只能为 3 个变量集群中的每一个选择低/中/高。
  • 是的,我弄错了。真丢人。
  • @user3714137 以后,请提供其他人可以轻松使用的示例数据(请参阅 thelatemail 必须如何提供示例数据?)以及您想要的结果。这节省了每个人的时间和精力,减少了猜测,并增加了你得到你想要的东西的机会。干杯!
  • 感谢您的评论,弗兰克!我会的。

标签: r data.table aggregate


【解决方案1】:

由于这些列是互斥的,我认为您最终最好将每组 3 列折叠到一个标记为 1/2/3 或 low/mid/hi 的变量,然后使用 tapply 计算平均值每组。例如:

dat <- data.frame(raltv=1:6,one_low=c(1,1,0,0,0,0),one_med=c(0,0,1,1,0,0),one_hi =c(0,0,0,0,1,1),two_low=c(1,1,0,0,0,0),two_med=c(0,0,1,1,0,0),two_hi =c(0,0,0,0,1,1),thr_low=c(1,1,0,0,0,0),thr_med=c(0,0,1,1,0,0),thr_hi =c(0,0,0,0,1,1))

看起来像:

  raltv one_low one_med one_hi two_low two_med two_hi thr_low thr_med thr_hi
1     1       1       0      0       1       0      0       1       0      0
2     2       1       0      0       1       0      0       1       0      0
3     3       0       1      0       0       1      0       0       1      0
4     4       0       1      0       0       1      0       0       1      0
5     5       0       0      1       0       0      1       0       0      1
6     6       0       0      1       0       0      1       0       0      1

处理它:

dat$one <- c("low","med","hi")[col(dat[2:4])[dat[2:4]==1]]
dat$two <- c("low","med","hi")[col(dat[5:7])[dat[5:7]==1]]
dat$thr <- c("low","med","hi")[col(dat[8:10])[dat[8:10]==1]]

tapply(dat$raltv,dat[c("one","two","thr")],mean)

#, , thr = hi
# 
#     two
#one    hi low med
#  hi  5.5  NA  NA
#  low  NA  NA  NA
#  med  NA  NA  NA
#  
#, , thr = low
# 
#     two
#one   hi low med
#  hi  NA  NA  NA
#  low NA 1.5  NA
#  med NA  NA  NA
# 
#, , thr = med
# 
#     two
#one   hi low med
#  hi  NA  NA  NA
#  low NA  NA  NA
#  med NA  NA 3.5

【讨论】:

  • 感谢您的回复。你能告诉我如何将每组 3 列折叠成一个变量吗?当 1 值没有像您的示例那样有序排列时,您的建议不起作用。
猜你喜欢
  • 2021-06-23
  • 2013-02-02
  • 1970-01-01
  • 2012-03-18
  • 1970-01-01
  • 2022-08-14
  • 1970-01-01
  • 2014-05-28
相关资源
最近更新 更多