r을 적용하는 방법과 r을 사용하는 방법을 천천히 배우고 있지만 전체적으로는 실패합니다.R : for 루프에서리스트 채우기
>df
id timestamp user_id app_version
1 96 2013-03-05 12 1.05
2 99 2013-03-05 32 1.0.5
3 02 2013-03-05 21 1.05
4 14 2013-03-05 21 1.0.5
5 16 2013-03-05 12 1.0.5
6 32 2013-03-06 32 1.0.3
7 33 2013-03-06 33 1.0.3
8 37 2013-03-06 12 1.0.3
9 39 2013-03-06 21 1.0.3
10 40 2013-03-06 12 1.0.5
그리고 벡터, 응용 프로그램 :
나는 (수천 user_ids 내 데이터 세트는 몇 년 동안 많은 날짜로 구성되어 현실에서,) 4 열 데이터 프레임, DF을 가지고
응용 프로그램 < -c는 ("1.0.3", "1.0.5", "2.05")
이
내 최종 목표는 사용자가 로그인 할 때 하루에 평균 횟수를 계산하는 것이다 (즉,사용자가 동일한 타임 스탬프로 가지고있는 엔트리 수의 평균)를 버전 번호 (예. 앱 버전 1.05 사용자의 경우 2013-03-05에 하루 평균 3 회의 로그인이 발생합니다. df[which(df$app_version="1.05"),]
을 통해 직접이 작업을 수행 할 수 있습니다. 하지만 내 애플 리케이션 벡터를 통해 루프를하고 각 데이터 프레임은 행과 평균으로 날짜를 포함하는 각 애플 리케이션 버전에 대한 하나의 데이터 프레임, 결국 데이터 프레임의 목록을 가지고 싶습니다. 열로 로그인 한 수). 아래의 코드는 내 접근 방식이지만 두 개의 숫자가 아닌 두 개의 데이터 프레임 목록이므로 최종 목록이 정확하지 않습니다. 모든 도움이 하느님의 선물이 될 것입니다. 고마워요!
require(reshape2)
require(dplyr)
require(lubridate)
df$timestamp <- as.Date(df$timestamp) # Converting to date
# Step 1 ------------------------------------------------------------------
# Parsing data into different dataframes for each app version
flist<-vector(mode="list",length=length(app))
fdts<-vector(mode="list",length=length(app))
for (i in 1:length(app)){
appdat<-df[which(df$app_version==app[i]),]
# Step 2 ------------------------------------------------------------------
# Creating table of timestamps as columns, with user_ids making up row
tmp.ndat<-dcast(appdat,id~timestamp,value.var="user_id",drop=TRUE)
# Step 3 ------------------------------------------------------------------
# Createing contingency tables of each day
ctable.day<-apply(tmp.ndat[,-1],2,table)
# Step 4 ------------------------------------------------------------------
# Calculating the avg and stdev for each user for each day
dts<-as.Date(names(ctable.day))
avg.day<-lapply(ctable.day,mean)
sd.day<-lapply(ctable.day,sd)
# Step 5 ------------------------------------------------------------------
# Combine all averages and stdevs, with timestamp as rows and app version as columns
tmp<-cbind(avg.day,sd.day)
tmp.dts<-as.Date(names(ctable.day))
flist[i]<-tmp
fdts[i]<-tmp.dts
}
return(flist)
당신이 뭘 하려는지 명확하지 않다 없기 때문에 상당히 재미있다 . 또한 데이터에 존재하지 않는 2013-06-05 날짜에 대해서도 이야기합니다. – agstudy