本文整理汇总了C++中DataFrame类的典型用法代码示例。如果您正苦于以下问题:C++ DataFrame类的具体用法?C++ DataFrame怎么用?C++ DataFrame使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了DataFrame类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: inner_join_impl
// [[Rcpp::export]]
DataFrame inner_join_impl(DataFrame x, DataFrame y,
IntegerVector by_x, IntegerVector by_y,
IntegerVector aux_x, IntegerVector aux_y,
bool na_match) {
check_by(by_x);
typedef VisitorSetIndexMap<DataFrameJoinVisitors, std::vector<int> > Map;
DataFrameJoinVisitors visitors(x, y, by_x, by_y, false, na_match);
Map map(visitors);
int n_x = x.nrows(), n_y = y.nrows();
std::vector<int> indices_x;
std::vector<int> indices_y;
train_push_back_right(map, n_y);
for (int i = 0; i < n_x; i++) {
Map::iterator it = map.find(i);
if (it != map.end()) {
push_back_right(indices_y, it->second);
push_back(indices_x, i, it->second.size());
}
}
return subset_join(x, y,
indices_x, indices_y,
by_x, by_y,
aux_x, aux_y,
get_class(x)
);
}
示例2: right_join_impl
// [[Rcpp::export]]
DataFrame right_join_impl(DataFrame x, DataFrame y,
IntegerVector by_x, IntegerVector by_y,
IntegerVector aux_x, IntegerVector aux_y,
bool na_match) {
check_by(by_x);
typedef VisitorSetIndexMap<DataFrameJoinVisitors, std::vector<int> > Map;
DataFrameJoinVisitors visitors(x, y, by_x, by_y, false, na_match);
Map map(visitors);
// train the map in terms of x
train_push_back(map, x.nrows());
std::vector<int> indices_x;
std::vector<int> indices_y;
int n_y = y.nrows();
for (int i = 0; i < n_y; i++) {
// find a row in y that matches row i in x
Map::iterator it = map.find(-i - 1);
if (it != map.end()) {
push_back(indices_x, it->second);
push_back(indices_y, i, it->second.size());
} else {
indices_x.push_back(-i - 1); // point to the i-th row in the right table
indices_y.push_back(i);
}
}
return subset_join(x, y,
indices_x, indices_y,
by_x, by_y,
aux_x, aux_y,
get_class(x)
);
}
示例3: findProximity
void RandomTree::findProximity(DataFrame & data, std::vector<unsigned int> & proximity)
{
std::vector<unsigned int> proxVec;
unsigned int dSize = data.getNumDataVectors();
proxVec.resize(dSize);
//Find out which node each vector is classified as
for(unsigned int i = 0; i < dSize; i++)
{
std::string resultClass;
unsigned int nodeId = classifyDataVector(data.getDataVector(i), resultClass);
proxVec[i] = nodeId;
}
for(unsigned int j = 0; j < dSize; j++)
{
unsigned int tempId = proxVec[j];
for(unsigned int k = j; k < dSize;j++)
{
if(proxVec[k] == tempId)
{
proximity[j * dSize + k] += 1;
}
}
}
}
示例4: grouped_subset
inline DataFrame grouped_subset( const Data& gdf, const LogicalVector& test, const CharacterVector& names, CharacterVector classes){
DataFrame data = gdf.data() ;
DataFrame res = subset( data, test, names, classes) ;
res.attr("vars") = data.attr("vars") ;
strip_index(res);
return Data(res).data() ;
}
示例5: discretize
void DataFrameDiscretizer::discretize(DataFrame& df, TgsProgress* progress)
{
_df = &df;
for (unsigned int i = 0; i < df.getNumFactors(); i++)
{
if (progress)
{
progress->setProgress((double)i / (double)df.getNumFactors());
}
if (_df->isNominal(i) == false)
{
if (_df->getNullTreatment(i) == DataFrame::NullAsMissingValue)
{
// replace nulls with random sampling of data (imputation), otherwise nulls get put
// into their own category.
_replaceNulls(i);
}
_discretizeColumn(i);
}
}
if (progress)
{
progress->setProgress(1.0);
}
}
示例6: inner_join_impl
// [[Rcpp::export]]
DataFrame inner_join_impl(DataFrame x, DataFrame y,
CharacterVector by_x, CharacterVector by_y,
std::string& suffix_x, std::string& suffix_y,
bool na_match) {
if (by_x.size() == 0) stop("no variable to join by");
typedef VisitorSetIndexMap<DataFrameJoinVisitors, std::vector<int> > Map;
DataFrameJoinVisitors visitors(x, y, SymbolVector(by_x), SymbolVector(by_y), true, na_match);
Map map(visitors);
int n_x = x.nrows(), n_y = y.nrows();
std::vector<int> indices_x;
std::vector<int> indices_y;
train_push_back_right(map, n_y);
for (int i = 0; i < n_x; i++) {
Map::iterator it = map.find(i);
if (it != map.end()) {
push_back_right(indices_y, it->second);
push_back(indices_x, i, it->second.size());
}
}
return subset_join(x, y,
indices_x, indices_y,
by_x, by_y,
suffix_x, suffix_y,
get_class(x)
);
}
示例7: anti_join_impl
// [[Rcpp::export]]
DataFrame anti_join_impl(DataFrame x, DataFrame y, CharacterVector by_x, CharacterVector by_y, bool na_match) {
if (by_x.size() == 0) stop("no variable to join by");
typedef VisitorSetIndexMap<DataFrameJoinVisitors, std::vector<int> > Map;
DataFrameJoinVisitors visitors(x, y, SymbolVector(by_x), SymbolVector(by_y), false, na_match);
Map map(visitors);
// train the map in terms of x
train_push_back(map, x.nrows());
int n_y = y.nrows();
// remove the rows in x that match
for (int i = 0; i < n_y; i++) {
Map::iterator it = map.find(-i - 1);
if (it != map.end())
map.erase(it);
}
// collect what's left
std::vector<int> indices;
for (Map::iterator it = map.begin(); it != map.end(); ++it)
push_back(indices, it->second);
const DataFrame& out = subset(x, indices, x.names(), get_class(x));
strip_index(out);
return out;
}
示例8: right_join_impl
// [[Rcpp::export]]
DataFrame right_join_impl(DataFrame x, DataFrame y,
CharacterVector by_x, CharacterVector by_y,
std::string& suffix_x, std::string& suffix_y,
bool na_match) {
if (by_x.size() == 0) stop("no variable to join by");
typedef VisitorSetIndexMap<DataFrameJoinVisitors, std::vector<int> > Map;
DataFrameJoinVisitors visitors(x, y, SymbolVector(by_x), SymbolVector(by_y), true, na_match);
Map map(visitors);
// train the map in terms of x
train_push_back(map, x.nrows());
std::vector<int> indices_x;
std::vector<int> indices_y;
int n_y = y.nrows();
for (int i = 0; i < n_y; i++) {
// find a row in y that matches row i in x
Map::iterator it = map.find(-i - 1);
if (it != map.end()) {
push_back(indices_x, it->second);
push_back(indices_y, i, it->second.size());
} else {
indices_x.push_back(-i - 1); // point to the i-th row in the right table
indices_y.push_back(i);
}
}
return subset_join(x, y,
indices_x, indices_y,
by_x, by_y,
suffix_x, suffix_y,
get_class(x)
);
}
示例9: semi_join_impl
// [[Rcpp::export]]
DataFrame semi_join_impl(DataFrame x, DataFrame y, CharacterVector by_x, CharacterVector by_y, bool na_match) {
if (by_x.size() == 0) stop("no variable to join by");
typedef VisitorSetIndexMap<DataFrameJoinVisitors, std::vector<int> > Map;
DataFrameJoinVisitors visitors(x, y, SymbolVector(by_x), SymbolVector(by_y), false, na_match);
Map map(visitors);
// train the map in terms of x
train_push_back(map, x.nrows());
int n_y = y.nrows();
// this will collect indices from rows in x that match rows in y
std::vector<int> indices;
for (int i = 0; i < n_y; i++) {
// find a row in x that matches row i from y
Map::iterator it = map.find(-i - 1);
if (it != map.end()) {
// collect the indices and remove them from the
// map so that they are only found once.
push_back(indices, it->second);
map.erase(it);
}
}
const DataFrame& out = subset(x, indices, x.names(), get_class(x));
strip_index(out);
return out;
}
示例10: filter_impl
// [[Rcpp::export]]
SEXP filter_impl( DataFrame df, LazyDots dots){
if( df.nrows() == 0 || Rf_isNull(df) ) {
return df ;
}
check_valid_colnames(df) ;
assert_all_white_list(df) ;
if( dots.size() == 0 ) return df ;
// special case
if( dots.size() == 1 && TYPEOF(dots[0].expr()) == LGLSXP){
LogicalVector what = dots[0].expr() ;
if( what.size() == 1 ){
if( what[0] == TRUE ){
return df ;
} else {
return empty_subset( df, df.names(), is<GroupedDataFrame>(df) ? classes_grouped<GroupedDataFrame>() : classes_not_grouped() ) ;
}
}
}
if( is<GroupedDataFrame>( df ) ){
return filter_grouped<GroupedDataFrame, LazyGroupedSubsets>( GroupedDataFrame(df), dots);
} else if( is<RowwiseDataFrame>(df) ){
return filter_grouped<RowwiseDataFrame, LazyRowwiseSubsets>( RowwiseDataFrame(df), dots);
} else {
return filter_not_grouped( df, dots ) ;
}
}
示例11: fixOverflows
// update the device's data
void Device::update()
{
// read current traffic
DataFrame dataFrame = m_devReader.getNewDataFrame();
if(dataFrame.isValid())
{
/* Depending on the CPU architecture and the OS interface
* used for reading the device statistics, the counts can
* overflow. We monitor the overflows and fix them.
*/
fixOverflows(dataFrame, m_dataFrameOld);
m_deviceStatistics.insertDataFrame(dataFrame);
m_deviceGraphIn.update(m_deviceStatistics.getDataInPerSecond());
m_deviceGraphOut.update(m_deviceStatistics.getDataOutPerSecond());
m_dataFrameOld = dataFrame;
}
else
{
m_deviceStatistics.reset();
m_deviceGraphIn.resetTrafficData();
m_deviceGraphOut.resetTrafficData();
}
}
示例12: filter_not_grouped
SEXP filter_not_grouped( DataFrame df, List args, const DataDots& dots){
CharacterVector names = df.names() ;
SymbolSet set ;
for( int i=0; i<names.size(); i++){
set.insert( Rf_install( names[i] ) ) ;
}
if( dots.single_env() ){
Environment env = dots.envir(0) ;
// a, b, c -> a & b & c
Shield<SEXP> call( and_calls( args, set ) ) ;
// replace the symbols that are in the data frame by vectors from the data frame
// and evaluate the expression
CallProxy proxy( (SEXP)call, df, env ) ;
LogicalVector test = proxy.eval() ;
check_filter_result(test, df.nrows());
DataFrame res = subset( df, test, df.names(), classes_not_grouped() ) ;
return res ;
} else {
int nargs = args.size() ;
CallProxy first_proxy(args[0], df, dots.envir(0) ) ;
LogicalVector test = first_proxy.eval() ;
check_filter_result(test, df.nrows());
for( int i=1; i<nargs; i++){
LogicalVector test2 = CallProxy(args[i], df, dots.envir(i) ).eval() ;
combine_and(test, test2) ;
}
DataFrame res = subset( df, test, df.names(), classes_not_grouped() ) ;
return res ;
}
}
示例13: filter_grouped_single_env
DataFrame filter_grouped_single_env( const GroupedDataFrame& gdf, const List& args, const Environment& env){
const DataFrame& data = gdf.data() ;
CharacterVector names = data.names() ;
SymbolSet set ;
for( int i=0; i<names.size(); i++){
set.insert( Rf_install( names[i] ) ) ;
}
// a, b, c -> a & b & c
Call call( and_calls( args, set ) ) ;
int nrows = data.nrows() ;
LogicalVector test = no_init(nrows);
LogicalVector g_test ;
GroupedCallProxy call_proxy( call, gdf, env ) ;
int ngroups = gdf.ngroups() ;
GroupedDataFrame::group_iterator git = gdf.group_begin() ;
for( int i=0; i<ngroups; i++, ++git){
SlicingIndex indices = *git ;
int chunk_size = indices.size() ;
g_test = call_proxy.get( indices );
check_filter_result(g_test, chunk_size ) ;
for( int j=0; j<chunk_size; j++){
test[ indices[j] ] = g_test[j] ;
}
}
DataFrame res = subset( data, test, names, classes_grouped() ) ;
res.attr( "vars") = data.attr("vars") ;
return res ;
}
示例14: semi_join_impl
// [[Rcpp::export]]
DataFrame semi_join_impl( DataFrame x, DataFrame y, CharacterVector by){
typedef VisitorSetIndexMap<DataFrameJoinVisitors, std::vector<int> > Map ;
DataFrameJoinVisitors visitors(x, y, by) ;
Map map(visitors);
// train the map in terms of x
train_push_back( map, x.nrows(), x.nrows() / 10) ;
int n_y = y.nrows() ;
// this will collect indices from rows in x that match rows in y
std::vector<int> indices ;
for( int i=0; i<n_y; i++){
// find a row in x that matches row i from y
Map::iterator it = map.find(-i-1) ;
if( it != map.end() ){
// collect the indices and remove them from the
// map so that they are only found once.
push_back( indices, it->second ) ;
map.erase(it) ;
}
}
return subset(x, indices, x.names(), x.attr("class") ) ;
}
示例15: right_join_impl
// [[Rcpp::export]]
DataFrame right_join_impl( DataFrame x, DataFrame y, CharacterVector by){
typedef VisitorSetIndexMap<DataFrameJoinVisitors, std::vector<int> > Map ;
DataFrameJoinVisitors visitors(x, y, by) ;
Map map(visitors);
// train the map in terms of y
train_push_back( map, x.nrows(), x.nrows() / 10 ) ;
std::vector<int> indices_x ;
std::vector<int> indices_y ;
int n_y = y.nrows() ;
for( int i=0; i<n_y; i++){
// find a row in y that matches row i in x
Map::iterator it = map.find(-i-1) ;
if( it != map.end() ){
push_back( indices_x, it->second ) ;
push_back( indices_y, i, it->second.size() ) ;
} else {
indices_x.push_back(-1) ; // mark NA
indices_y.push_back(i) ;
}
}
return subset( x, y, indices_x, indices_y, by, x.attr( "class" ) ) ;
}