データフレームを変更するためのスクリプトを作成しましたが、私は解決できないようないくつかの問題を抱えています。まず第一に、変数mac_sectorをセクタにリネームしたい部分は動作していないように見えますが、名前を変更したり、エラーを出すことはありません。リスト内の要素の名前とファイル名の一致と名前の変更R
また、私が修正したデータセットを保存すると、単に1,2,3 ...と呼ばれます。しかし、実際には元の名前と同じ名前にしておきたいだけです。私は"names(dflist)[i] <- gsub("\\.dta$", "", files)"
でこれをやろうとしましたが、うまくいきません。
それは、彼らがファイルの実際の効果を持っている場合、私は、私は何の合併症は見られなかったように、知っていないものの、同様にこれらの警告メッセージを与える: 警告メッセージ:
1: In save.dta13(dflist[[i]], paste0(i, ".dta")) :
Number of variable labels does not match number of variables.
Variable labels dropped.
2: In save.dta13(dflist[[i]], paste0(i, ".dta")) :
Number of variable labels does not match number of variables.
Variable labels dropped.
3: In save.dta13(dflist[[i]], paste0(i, ".dta")) :
Number of variable labels does not match number of variables.
Variable labels dropped.
最後に、そこにありますあなたの作業ディレクトリ以外のディレクトリにファイルを保存する方法?
マイスクリプト:
setwd("C:\\....")
files = list.files(pattern="*.dta")
dflist <- list()
for (i in 1:length(files)){
dflist[[i]] <- read.dta13(files[i], nonint.factors = TRUE)
if("mac_sector" %in% colnames(dflist[[i]])){ #rename mac_sector to sector if present
rename(dflist[[i]], c(mac_sector="sector"))}
if(!("sector" %in% colnames(dflist[[i]]))){ #This creates "sector" variable if it doesn't exist already.
dflist[[i]]$sector <- "total"}
names(dflist)[i] <- gsub("\\.dta$", "", files) #Matching the names of the elements to the filenames
save.dta13(dflist[[i]], paste0(i, ".dta")) #Saving dataset
}
入力: データフレーム1:
country SA year DV VI DI DIV DIV_s DIV_p t ta
1 AUSTRIA NA 2001 0 NA NA NA NA NA 0 NA
2 AUSTRIA NA 2002 0 NA NA NA NA NA 0 NA
3 AUSTRIA NA 2003 0 NA NA NA NA NA 0 NA
4 AUSTRIA NA 2004 0 NA NA NA NA NA 0 NA
5 AUSTRIA NA 2005 0 NA NA NA NA NA 0 NA
データフレーム2:
country mac_sector SA year DV VI DI DIV DIV_s DIV_p t ta
1 BELGIUM ing 0 2001 0 NA NA NA NA NA 3036 0.09725133
2 BELGIUM ing 0 2002 0 NA NA NA NA NA 2970 0.09641831
3 BELGIUM ing 0 2003 0 NA NA NA NA NA 2917 0.09791633
4 BELGIUM ing 0 2004 0 NA NA NA NA NA 2907 0.10297798
5 BELGIUM ing 0 2005 0 NA NA NA NA NA 2904 0.10182869
データフレーム3:
country sector SA year DV VI DI DIV DIV_s DIV_p t ta
1 BELGIUM prod 0 2001 0 NA NA NA NA NA 392 0.09688306
2 BELGIUM prod 0 2002 0 NA NA NA NA NA 398 0.09394456
3 BELGIUM prod 0 2003 0 NA NA NA NA NA 394 0.09536502
4 BELGIUM prod 0 2004 0 NA NA NA NA NA 404 0.10367264
5 BELGIUM prod 0 2005 0 NA NA NA NA NA 407 0.08961585
はい、私はすでに '名前を変更しようとした(dflist [[I]] 、c( "mac_sector" = "sector")) '、動作しません! '名前(dflist)[i] < - gsub(" \\。dta $ "、" files [i]) 'はまだ1,2,3 ...と保存されています... – DuEllier
私たちはあなたの入力データを再作成することができません... – desc
私は入力データがどのように見えるかを含めました。 – DuEllier