1

我正在尝试为缺席和在场生成 0 和 1。我的数据是线段,对于位于段内的点或段外的点,我必须以 0.1 的间隔绘制 0 或 1。

    V1   V2   V3  V4        V5 V6 V7
3   17 26.0 26.0  0 12-Jun-84  1  0
4   17 48.0 48.0  1 12-Jun-84  3  0
5   17 56.7 56.7  0 12-Jun-84  1  0
143 17 16.3 16.3  0 19-Jun-84  1  8
144 17 17.7 17.7  0 19-Jun-84  1  8
145 17 22.0 22.0  0 19-Jun-84  1  8

v2是起点和v3终点,v4是它们之间的分隔。

我努力了

tran17 <- seq(0, 80, by=0.1)
tran17.date1 <- rep(0, length(tran17))
##
sub1 <-which(tran17 >= c$V2[i] & tran17 <= c$V3[i])
tran17.date1[sub1] <- 1

谢谢你

4

2 回答 2

1

忽略您的数据示例并专注于您的问题,我认为这可以解决问题。此外,如果V1是一个分组因素,您可以使用tapplyover PAmatrix

# test data
sed.seed(1104) 
dat = data.frame(V1=17, V2=runif(200, 10, 60))
dat$V3 = dat$V2 + runif(200, 0, 20)
dat$V4 = dat$V3 - dat$V2

  V1       V2       V3         V4
1 17 37.25826 45.54194  8.2836734
2 17 17.44098 22.86841  5.4274331
3 17 49.78488 55.51627  5.7313965
4 17 51.66640 52.54813  0.8817293
5 17 21.84276 39.38477 17.5420079
6 17 53.39457 54.51613  1.1215530

# functions to solve the problem
isInside = function(limits, tran) as.numeric(tran>=limits[1] & tran<=limits[2])
PAmatrix = function(data, tran) t(apply(data, 1, isInside, tran=tran))

# calculate the PA matrix
tran17 = seq(0, 80, by=0.1)
PA17 = PAmatrix(data=dat[,c("V2","V3")], tran=tran17)

# plot the results
image(seq(nrow(dat)), tran17, PA17, col=c("blue", "red"))

剧情

于 2013-06-28T07:01:06.417 回答
0
tran17 <- seq(0, 80, by=0.1)

tran17.date1 <- 代表(0,长度(tran17))

dm <- which(c$V5 == "31-Jul-84")

for(i in dm){ print(i) sub1 <-which(tran17 >= c$V2[i] & tran17 <= c$V3[i]) tran17.date1[sub1] <- 1

}

情节(tran17,tran17.date1)

于 2013-06-29T19:06:19.673 回答