Это старая версия документа!


Утилиты для упрощения работы с данными

rowApply <- function(fun,tbl,vec) data.frame(mapply(fun, tbl, vec, SIMPLIFY = F));

selectNames <- function(tbl,namevec) {
    rtbl <- tbl;
    for ( n in namevec ) if (!n %in% names(rtbl)) rtbl[[n]] <- 0.0;
    for ( n in names(rtbl) ) if (!n %in% namevec) rtbl[[n]] <- NULL;
    return(rtbl[,namevec]);
}

occupation_r <- function(row, target_col, target_max, source_cols)
{
  for (c in source_cols)
  {
    if(row[[target_col]] >= target_max) break;
    
    row[[target_col]] =  row[[target_col]] + row[[c]];
    
    if(row[[target_col]] >= target_max)
    {
      row[[c]] =  row[[target_col]] - target_max;
      row[[target_col]] = target_max;
      break
    }
    else
    {
      row[[c]] = 0.0;
    }
  }
  return (row)
}

occupation <- function(data, target_col, target_max, source_cols)
{
  v = apply(d, 1, occupation_r, target_col, target_max, source_cols);
  return(data.frame(t(v)));
}
  • utilities.1453985708.txt.gz
  • Последние изменения: 2018/11/12 15:08
  • (внешнее изменение)