Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用列表中定义的过滤器从原始数据框中子集数据_R - Fatal编程技术网

R 使用列表中定义的过滤器从原始数据框中子集数据

R 使用列表中定义的过滤器从原始数据框中子集数据,r,R,我有大小为(1100000*62)的原始数据集,需要根据手动过滤器划分数据 我创建了一个函数,可以通过手动输入参数来分离数据:它接受以下参数 segment_dat <- function(data, Region, gtv_class_bracket, hotelclass){...} segment_-dat这里是您的segment_-dat()函数的替代品。调用它不需要三重for循环。在函数下面,它在您的数据上被调用 segment_dat <- function(data,

我有大小为(1100000*62)的原始数据集,需要根据手动过滤器划分数据

我创建了一个函数,可以通过手动输入参数来分离数据:它接受以下参数

segment_dat <- function(data, Region, gtv_class_bracket, hotelclass){...}

segment_-dat这里是您的
segment_-dat()
函数的替代品。调用它不需要三重for循环。在函数下面,它在您的数据上被调用

segment_dat <- function(data, region, gtv_class_bracket, hotelclass){
    ## Build inputs list while checking for missing inputs
    inputs <- list()
    if(!missing(region)) inputs <- list(region=region)
    if(!missing(gtv_class_bracket) inputs <- c(inputs, list(gtv_class_bracket=gtv_class_bracket))
    if(!missing(hotelclass)) inputs <- c(inputs, hotelclass=hotelclass)
    if(inputs == 0) stop("Some subsetable column is required as input.")

    ## Build permutation data.frame
    inputs['stringsAsFactors'] <- FALSE
    values <- do.call(expand.grid, inputs)

    ## Generate list of data.frames
    apply(vals, 1, function(x) merge(data, x))
}

data <- segment_dat(hotel_clus3, reg, gtv, hc)

段_dat在特定列下是否为“北”?“GTV1”是否在特定列下?是否为“0.5”等?您需要将数据[[i]]更改为类似于数据[[paste(j,i,k,sep=”“])]的内容。否则,数据[[i]]将持续写入,直到最后一个j=5和k=6。您能在问题中包括
段数据()的内容吗?您看过
拆分
了吗?还考虑添加一个派生的列,定义为<代码>应用(StEngTyDATA)、C(“区域”、“GTVX CaseSub括号”、“HoTeleCype”)、1、粘贴、SEP=“*”<代码>(三列的连接)@ CiPakk是,No.GTV1,0.5在特定列下。
# example data
data=list()
reg<-as.list(c("NORTH","EAST","WEST","SOUTH"))
gtv<-as.list(c("GTV1","GTV2","GTV3","GTV4","GTV5"))
hc<-as.list(c(0.5,1,2,3,4,5))
#xx<-data.frame()
for (i in 1:length(reg)){
  for(j in 1:length(gtv)){
    j=i
    for(k in 1:length(hc)){
      k=j
        data[[i]]<-segment_dat(hotel_clus3,Region=reg[[i]],
                   gtv_class_bracket=gtv[[j]],hotelclass=hc[[k]])   
    }} }
segment_dat <- function(data, region, gtv_class_bracket, hotelclass){
    ## Build inputs list while checking for missing inputs
    inputs <- list()
    if(!missing(region)) inputs <- list(region=region)
    if(!missing(gtv_class_bracket) inputs <- c(inputs, list(gtv_class_bracket=gtv_class_bracket))
    if(!missing(hotelclass)) inputs <- c(inputs, hotelclass=hotelclass)
    if(inputs == 0) stop("Some subsetable column is required as input.")

    ## Build permutation data.frame
    inputs['stringsAsFactors'] <- FALSE
    values <- do.call(expand.grid, inputs)

    ## Generate list of data.frames
    apply(vals, 1, function(x) merge(data, x))
}

data <- segment_dat(hotel_clus3, reg, gtv, hc)