【发布时间】:2011-07-03 22:39:07
【问题描述】:
我正在创建一些人工数据。我需要创建家庭ID(H_ID)和个人ID(P_ID,在每个家庭)。
我找到了一种以矢量化方式创建 H_ID 的方法。
N <- 50
### Household ID
# loop-for
set.seed(20110224)
H_ID <- vector("integer", N)
H_ID[1] <- 1
for (i in 2:N) if (runif(1) < .5) H_ID[i] <- H_ID[i-1]+1 else H_ID[i] <- H_ID[i-1]
print(H_ID)
# vectorised form
set.seed(20110224)
r <- c(0, runif(N-1))
H_ID <- cumsum(r < .5)
print(H_ID)
但我不知道如何以矢量化方式创建 P_ID。
### Person ID
# loop-for
P_ID <- vector("integer", N)
P_ID[1] <- 1
for (i in 2:N) if (H_ID[i] > H_ID[i-1]) P_ID[i] <- 1 else P_ID[i] <- P_ID[i-1]+1
print(cbind(H_ID, P_ID))
# vectorised form
# ???
【问题讨论】: