0

私はRでこれを行う方法を見つけるのに苦労しています。私は約50のcsvファイルのセットからこのようなデータを持っており、それぞれが個々の本の販売取引を詳述しています。

**week 1**
**author** **title** **customerID**
author1 title1 1
author1 title2 2
author2 title3 3
author3 title4 3

**week 2**
**author** **title** **customerID**
author1 title1 4
author3 title4 5
author4 title5 1
author5 title6 6

... ~ 50 weeks, each from a separate csv file

新しいテーブルを取得したいと思います。各行は完全なデータセットに表示される作成者を表し、データがある約50週間ごとの列があります。各セルは、その週のその著者の本の販売数である必要があります。これは、その週の販売ファイル内のその作成者の行数を合計することで簡単に計算できます。したがって、次のようになります。

**author** **week1** **week2** ... **week50**
author1 2 1 ...
author2 1 0 ...
author3 1 1 ...
author4 0 1 ...
author5 0 1 ...
...

何か案は?私は、最初の列を作成するためのユニークな著者のリストを取得する方法を知っています。そして、毎週の販売データをデータフレームにロードする方法を知っています。しかし、このプロセスを自動化するための支援が必要です。1)一意の作成者を反復処理します。2)毎週のcsvファイルまたはデータフレームを反復処理します。3)その週のその作成者の売上を合計します。4)そのセルの値としてカウントを追加します。

誰か助けてもらえますか?ありがとう :-)

4

1 に答える 1

1
text1<-"**week 1**
**author** **title** **customerID**
author1 title1 1
author1 title2 2
author2 title3 3
author3 title4 3
"

df1<-read.table(header=T,skip=1,stringsAsFactors=F,text=text1)
week1<-read.table(header=F,nrows=1,stringsAsFactors=F,text=text1,sep=";")
week1<-substr(week1,3,nchar(week1)-2)
df1$week<-rep(week1,nrow(df1))

text2<-"**week 2**
**author** **title** **customerID**
author1 title1 4
author3 title4 5
author4 title5 1
author5 title6 6
"

df2<-read.table(header=T,skip=1,stringsAsFactors=F,text=text2)
week2<-read.table(header=F,nrows=1,stringsAsFactors=F,text=text2,sep=";")
week2<-substr(week2,3,nchar(week2)-2)
df2$week<-rep(week2,nrow(df2))

df<-rbind(df1,df2)
names(df)<-c("author","title","customerID","week")

require(plyr)
agg<-ddply(df,~author*week,function(df) length(df$title))


require(reshape)
res<-cast(agg,author~week,value="V1",fill=0)
res

   author week 1 week 2
1 author1      2      1
2 author2      1      0
3 author3      1      1
4 author4      0      1
5 author5      0      1

データを読み込むために必要なのはループだけです。そのためにあなたは次のようなものを使うことができます

ff<-list.files(pattern="*.[Cc][Ss][Vv]")
for (i in 1:length(ff)){
  code for reading the data 
  and constructing the data.frame 
}
于 2012-07-10T11:24:18.767 に答える