1
내가 고객의 데이터 프레임 말해봐 - 나는 2 개 개의 다른 작업을 수행 할R의 순서
cust_df =
Date ArrivalTime TimeInStore AmountSpent
170920 930 30 20
170920 1000 20 20
170920 1001 30 100
170920 1500 15 10
170921 1030 10 200
170921 1111 25 50
170921 1900 10 75
: 1.을 얼마나 많은 시간과 돈을 하루에 3 개 첫 번째 고객 지출 2. 매일 3 명 이내의 무작위 3 고객과 비교하십시오. 해당 일에 3 명 미만의 고객이있는 경우 그 날부터 모든 고객을 포함시키고 싶습니다.
가장 효율적인 방법은 무엇입니까?
cust_df <- cust_df[order(cust_df$Date, cust_df$ArrivalTime),] #order by time
cust_df_by_Date <- split(cust_df,f = cust_df$Date) #split to dates
cust_num <- sapply(cust_df_by_Date,function(x) dim(x)[1]) #find num of customers per day
first_cust_df <- c()
i <- 1
for(num in cust_num){
if(num>=3){
first_cust_df <- rbind(first_cust_df,cust_df_by_Date[[i]][1:3,])
}
else{
first_cust_df <- rbind(first_cust_df,cust_df_by_Date[[i]][1:num,])
}
i <- i+1
}
그리고 임의의 부분 :
현재 내 코드는
rand_cust_sampling_df <- ldply(cust_df_by_Date,function(x) x[sample(1:dim(x)[1],ifelse(dim(x)[1]>=3,3,dim(x)[1])),])
내가 그렇게 할 수있는 더 효율적인 방법이 있다고 확신 해요,하지만 난 새로운 해요 이 특정 언어에 대한 답변을 찾지 못했습니다.
감사합니다.