0
我有原始數據集的大小(1100000 * 62),我需要根據手動過濾器劃分數據。使用列表中定義的過濾器從原始數據框中獲取子集數據
我已經創建了一個函數,可以通過手動輸入參數來分開數據:它取下面的參數。
segment_dat <- function(data, Region, gtv_class_bracket, hotelclass){...}
要求:數據的子集應當是如下參數:
- 數據[[1]]應根據NORTH-GTV1-0.5
- 數據[[2]]應該是基於NORTH-GTV1-5
...
- 數據[[120]]應該基於南-GTV5-5
我對迭代循環有點新。 我已經找到了多個線程,並且我能夠在代碼之下編寫代碼,但從現在開始它並沒有什麼幫助。最終目標是爲寫入的另一個函數提供每個數據集以進行聚類分析。請幫忙,如果你有任何線索。基本上我需要重複三個列表reg,gtv,hc。數據集 的最終計數應該是120。
#####################################################################
############ adding segment_dat code#########################
segment_dat<-function(data,Region,gtv_class_bracket,hotelclass) {
##############################if no parameters are missing #############################
if (!missing(Region) & !missing(gtv_class_bracket) &!missing(hotelclass)){
data1<-data[data$region==Region & data$gtv_class_bracket==gtv_class_bracket &
data$hotelclass==hotelclass,]
}
#################################################################################################
################### if two of the parameters are missing #######################################
else if(missing(gtv_class_bracket) & missing(hotelclass) & !missing(Region)) {
data1<-data[data$region==Region,]
}
else if (missing(Region) & missing(hotelclass) & !missing(gtv_class_bracket)){
data1<-data[data$gtv_class_bracket==gtv_class_bracket,]
}
else if (missing(Region) & missing(gtv_class_bracket) & !missing(hotelclass))
{
data1<-data[data$hotelclass==hotelclass,]
}
###########################################################################################
######################## If any one of the parameter is missing ###########################
else if (missing(gtv_class_bracket)){
data1<-data[data$hotelclass==hotelclass & data$region==Region,]
}
else if (missing(hotelclass)){
data1<-data[data$gtv_class_bracket==gtv_class_bracket & data$region==Region,]
}
else if (missing(Region)){
data1<-data[data$gtv_class_bracket==gtv_class_bracket & data$hotelclass==hotelclass,]
}
}
#
# 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]])
}} }
在特定列下是「NORTH」嗎? 「GTV1」是否在特定列下?是「0.5」等? – CPak
您需要將數據[[i]]更改爲data [[paste(j,i,k,sep =「」)]]]。否則,數據[[i]]將不斷寫入,直到最後一個j = 5和k = 6。 – user108363
你可以在你的問題中包含'segment_dat()'函數的內容嗎? – dvantwisk