我想创建一个如下所示的矩阵。基本上,我想检查行名是否小于当前列名且大于先前列名。 如果条件为true,则其他为1。
94673160 946764000 946785600
946702800 1 0 0
946706400 1 0 0
946710000 1 0 0
946713600 1 0 0
946717200 1 0 0
946720800 1 0 0
946724400 1 0 0
946728000 1 0 0
946731600 0 1 0
946735200 0 1 0
946738800 0 1 0
946742400 0 1 0
946746000 0 1 0
946749600 0 1 0
946753200 0 1 0
946756800 0 1 0
946760400 0 0 1
946764000 0 0 1
946767600 0 0 1
946771200 0 0 1
946774800 0 0 1
946778400 0 0 1
946782000 0 0 1
946785600 0 0 1
添加图片以供参考
答案 0 :(得分:0)
尽管措辞不佳,几乎没有答案,但我想我会收集您正在努力实现的目标。我假设您有两个向量(一个成为colname,一个成为rowname),并且您想要一个由1,0填充的矩阵,用于确定行名是否大于先前的位置colname并小于当前的索引colname? 第一个问题是如何处理第一列,没有前面的列,因此我假设我们仅测试是否小于pos 1的名称。
## Dummy code - ordered to make easier to follow but does not matter
cols <- sample(1:1000,20)
row <- sample(1:1000,20)
cols<-cols[order(cols)]
row<- row[order(row)]
## Do the test for what will be col 1 as it has different rule (no proceeding column)
col1 <- ifelse(row < cols[1], 1,0)
df <- data.frame(row.names = row,col1)
## loop through and test the remaining and cbind into dataframe
for(i in 2:length(cols)){
tmp<-ifelse(row < cols[i] & row >cols[i-1], 1,0)
df<-cbind(df, tmp)
}
colnames(df)<-cols