如何赋予条件以检查具有列名的行名

时间:2019-03-06 03:30:47

标签: r

我想创建一个如下所示的矩阵。基本上,我想检查行名是否小于当前列名且大于先前列名。 如果条件为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

添加图片以供参考

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