1
Iは、次のデータセットを有する:どのようにrの別のキー/ ID列に従って列に列を入れますか?
> head(Dataset)
IDCLIENT NUMDOSS PROV_200112 PROV_200212 PROV_200312 ....
H44879 0104957 0 0 0 ....
Z353025 0105289 0 0 0 ....
B416771 0105309 0 0 0 ....
B5043 0105366 0 0 0 ....
A725471 0105370 0 0 0 ....
BE406627 0105371 0 0 0 ....
これは125列と250台の000 OBS
我々は2つのID列を持つテーブルを持っているテーブルをID1、ID2と他の列レジスタ私は何をしようとしている私はわずか4列(ID1、ID2、日付(または期間)を持つようにこのテーブルを変換することです。 )およびProv )125の代わりに。そうする
>head(DF)
IDClient IDDossier Date Prov
B416771 0104957 PROV_200110 5
B416771 0104957 PROV_200111 0
B416771 0104957 PROV_200112 99
B416771 0104957 PROV_200212 1,23
H44879 0105289 PROV_200212 36,1
Z353025 0105309 PROV_200312 10436,175
BE4410 0105366 PROV_200406 10438,9
私は、次のコードを試してみましたが、それは本当に時間がかかるだと私はまた、Rからのいくつかのエラー/警告メッセージが表示されました:このような何か
# N= dim(ProvTab)[1]*dim(ProvTab)[2]
# DF=data.frame(IDClient=rep("",N),IDDossier=rep("",N),
# Date=rep("",N), Prov=rep("",N), stringsAsFactors = F)
DF=NULL
periodd=as.data.frame(colnames(ProvTab))
start.time= Sys.time() # to count running time !
for (k in 3:ncol(ProvTab))
{
for (j in 1:nrow(ProvTab))
{
DF=rbind(DF,
data.frame(IDClient=ProvTab[j,1], IDDossier=ProvTab[j,2],
Date = periodd[k,1] , Prov=ProvTab[j,k]))
}
}
end.time= Sys.time()
end.time- start.time
私が本当に探してみました他の解決策は失敗しました。
PS:RコードまたはSQLコードを歓迎します。
提案がありますか?
これはクールです!以前は関数が溶けているのを見ましたが、うまく理解できませんでした。大いに感謝する ! –