【发布时间】:2018-02-11 22:46:23
【问题描述】:
我正在使用 Walker 的别名方法来调整随机舍入数据,即基数 3。我已经将列值分配给数据框中的每个值 3,AliasColumn'. The values in theAliasColumnare integers in the range1through 5`。 I've used the Alias Method from here。数据框看起来像这样(它有 64 行):
Industry AliasColumn
1 5
2 5
3 4
4 2
5 3
6 1
7 2
8 2
9 3
10 5
11 4
12 4
13 4
14 2
15 2
16 1
17 4
18 3
19 5
20 5
基于AliasColumn 的值,我需要抛一个已加载的硬币来创建“真实”的业务计数(NumBusinesses),它介于 1 和 5 之间。已加载的硬币表是:
AliasColumn 1 2 3 4 5
"Heads prob" 8/12 11/12 1 10/12 5/12
"Alias prob" 4/12 1/12 - 2/12 7/12
Alias value 2 3 - 3 1
例如,如果 AliasColumn 的值为 1,则 NumBusinesses 值的 8/12 为 1,NumBusinesses 的值为 2 的时间为 4/12。对于 @987654333 @ 值为 3,这是唯一可以分配给 NumBusinesses 的值。
因此,NumBusinesses 接收两个值之一,概率取决于AliasColumn 中的特定列。因为NumBusinesses 列只能取两个值之一,并且因为它们是整数,并且根据AliasColumn 中的值而有所不同,所以我希望在R 中使用sample() 函数。我一直无法得到这工作。
我已经尝试过(我刚刚在我的代码中注意到,AliasColumn 值 4 的代码与 1 和 2 的代码不同,但输出似乎与我最初运行它时没有任何不同分别用1:2 和2:3 代替1,2 和2,3):
foo$NumBusinesses[AliasCol==1] <-sample(c(1,2),1, replace=TRUE,prob=c(8,4))
foo$NumBusinesses[AliasCol==2] <-sample(c(2,3),1, replace=TRUE,prob=c(11,1))
foo$NumBusinesses[AliasCol==3] <- 3
foo$NumBusinesses[AliasCol==4] <-sample(c(3:4),1, replace=TRUE,prob=c(2,10))
foo$NumBusinesses[AliasCol==5] <-sample(c(1,5),1, replace=TRUE,prob=c(7,5))
这似乎将NumBusinesses 的值设置为与AliasColumn 中的相同,除了NumBusinesses 的值是5,然后AliasColumn 的值被设置为1。
我考虑了一个 ifelse 循环,并尝试了一个:
ifelse(foo$AliasCol==1, foo$NumBusinesses<- Sample(c(1,2),1, replace=TRUE,prob=c(8,4)),
ifelse(foo$AliasCol==2),
foo$NumBusinesses<- sample(c(2,3),1, replace=TRUE,prob=c(11,1)),
ifelse(foo$AliasCol==3), foo$NumBusinesses<- 3,
ifelse(foo$AliasCol==4),
foo$NumBusinesses <- sample(c(3:4),1, replace=TRUE,prob=c(2,10)),
foo$NumBusinesses <- sample(c(1,5),1, replace=TRUE,prob=c(7,5)))
我收到了这个错误(这让我相信我想太多了):
Error in ifelse(foo$AliasCol == 1, foo$NumBusinesses <- sample(c(1, : unused arguments (foo3$NumBusinesses <- sample(c(2, 3), 1, replace = TRUE, prob = c(11, 1)), ifelse(foo$AliasCol == 3), foo$NumBusinesses <- 3, ifelse(foo$AliasCol == 4), foo$NumBusinesses <- sample(c(3:4), 1, replace = TRUE, prob = c(2, 10)), foo$NumBusinesses <- sample(c(1, 5), 1, replace = TRUE, prob = c(7, 5)))
如何在一个步骤或一组步骤中生成条件输出?
【问题讨论】:
标签: r dataframe random conditional-compilation