英文:
Error of "non-unique values when setting 'row.names'", after setting explicit unique row names
问题
这里是一个奇怪的情况:
我正在处理以下数据框:
str(ccomb)
'data.frame': 358 obs. of 36 variables:
$ Country.Name : chr "阿尔巴尼亚" "阿尔巴尼亚" "阿尔巴尼亚" ...
$ Donor : chr "欧盟机构" "欧盟机构" ...
$ Aid.type : chr "ODA: 总净额" "ODA: 总净额" ...
$ Amount.type : chr "恒定价格" "恒定价格" ...
$ year : num 2002 2003 2004 ...
$ Unit : chr "美元" "美元" "美元" ...
$ PowerCode : chr "百万" "百万" "百万" ...
$ Reference.Period : int 2020 2020 2020 ...
$ Total_Net_ODA : num 48.3 43.6 50.8 ...
$ geo : chr "EU27_2020" "EU27_2020" "EU27_2020" ...
$ EU_Exp : num 1166 1281 1376 ...
$ EU_Imp : num 355 396 416 ...
$ Control_of_Corruption : num -0.854 -0.724 -0.813 ...
$ Government_Effectiveness : num -0.569 -0.409 -0.705 ...
$ Political_Stability_and_Absence_of_Violence_and_Terrorism: num -0.31 -0.427 -0.505 ...
$ Regulatory_Quality : num -0.4902 -0.1875 -0.4007 ...
$ Rule_of_Law : num -0.716 -0.701 -0.764 ...
$ Voice_and_Accountability : num 0.07031 0.00724 0.00367 ...
$ pop : num 3.04 3.03 3.01 2.99 2.97 ...
$ GDPpC : num 2381 2522 2676 2851 3045 ...
$ aNNI : num 6.66 7.06 7.33 7.85 8.14 ...
$ openness : num 67 67 70.9 74.3 83.2 ...
$ import : num 46.2 44.8 47.9 ...
$ export : num 20.8 22.2 23 ...
$ infmort : num 20.4 19.1 17.8 ...
$ unemploy : num 17 16.3 16 15.6 16 ...
$ v2x_polyarchy : num 0.491 0.485 0.508 ...
$ v2x_libdem : num 0.398 0.4 0.416 0.436 ...
$ v2x_partipdem : num 0.318 0.322 0.341 ...
$ v2x_delibdem : num 0.383 0.382 0.422 ...
$ v2x_egaldem : num 0.355 0.353 0.361 ...
$ ref_UNHCR_EU : int 3851 3720 5385 ...
$ ref_asyl_seekers_EU : int 667 504 543 ...
$ refugees_EU : int 4518 4224 5928 ...
$ Governance : num -2.87 -2.44 -3.18 ...
$ region : chr "西巴尔干地区" "西巴尔干地区" ...
在对这个数据使用plm()
时,出现了几个问题,导致了错误消息:
首先,出现了错误消息:
> 在plm(Total_Net_ODA ~ logpop, logGDPpC, openness, import, export, )中出错:
> 参数'restrict.matrix'和'restrict.rhs'目前不能用于单一方程
在将其设置为restrict.matrix = NULL
和restrict.rhs = NULL
时,它不能再找到大多数变量。
因此,我使用了pdata.frame()
来处理这个问题。它实际上有效了,但引发了另一个问题。
我使用了以下代码进行转换:
ccomb <- comb
str(ccomb)
rowvec <- c(1:358)
make.unique(.rowNamesDF(ccomb, make.names = TRUE) <- as.character(rowvec))
unique(rownames(ccomb))
duplicated(rownames(ccomb))
ccomb <- pdata.frame(comb, index=c("Country.Name", "year"), row.names = FALSE)
modE<-plm(Total_Net_ODA ~ openness, import, export, index=c("Country.Name", "year"),data = ccomb, model="within")
所以,这段代码导致了以下错误消息:
> 在.rowNamesDF<-
(x, value = value)中出现错误:
> 不允许重复'row.names'
> 此外:警告信息:
> 设置'row.names'时存在非唯一值:‘19’、‘21’、‘22’、‘23’、‘24’、‘25’、‘26’、‘27’、‘28’、‘29’、‘30’、‘31’、‘32’、‘33’、‘34’、‘35’、‘36’、‘37’、‘38’、‘39’、‘40’、‘41’、‘42’、‘43’、‘44’、‘45’、‘46’、‘47’、‘48’、‘49’、‘50’、‘51’、‘52’、‘53’、‘54’、‘55’、‘56’、‘58’、‘59’、‘60’、‘61’、‘62’、‘63’、‘64’、‘65’、‘66’、‘67’、‘68’、‘69’、‘71’、‘73’、‘76’、‘78’
这很奇怪,因为上面的代码明确取消了任何非唯一的行名,并且duplicated(rownames(ccomb))
行明确将每一行标记为FALSE。
我希望这些信息足够了解情况。如果不够,请告诉我。
英文:
here is a weird one:
I am working on the following data frame:
str(ccomb)
'data.frame': 358 obs. of 36 variables:
$ Country.Name : chr "Albania" "Albania" "Albania" ...
$ Donor : chr "EU Institutions" "EU Institutions" ...
$ Aid.type : chr "ODA: Total Net" "ODA: Total Net" ...
$ Amount.type : chr "Constant Prices" "Constant Prices" ...
$ year : num 2002 2003 2004 ...
$ Unit : chr "US Dollar" "US Dollar" "US Dollar" ...
$ PowerCode : chr "Millions" "Millions" "Millions" ...
$ Reference.Period : int 2020 2020 2020 ...
$ Total_Net_ODA : num 48.3 43.6 50.8 ...
$ geo : chr "EU27_2020" "EU27_2020" "EU27_2020" ...
$ EU_Exp : num 1166 1281 1376 ...
$ EU_Imp : num 355 396 416 ...
$ Control_of_Corruption : num -0.854 -0.724 -0.813 ...
$ Government_Effectiveness : num -0.569 -0.409 -0.705 ...
$ Political_Stability_and_Absence_of_Violence_and_Terrorism: num -0.31 -0.427 -0.505 ...
$ Regulatory_Quality : num -0.4902 -0.1875 -0.4007 ...
$ Rule_of_Law : num -0.716 -0.701 -0.764 ...
$ Voice_and_Accountability : num 0.07031 0.00724 0.00367 ...
$ pop : num 3.04 3.03 3.01 2.99 2.97 ...
$ GDPpC : num 2381 2522 2676 2851 3045 ...
$ aNNI : num 6.66 7.06 7.33 7.85 8.14 ...
$ openness : num 67 67 70.9 74.3 83.2 ...
$ import : num 46.2 44.8 47.9 ...
$ export : num 20.8 22.2 23 ...
$ infmort : num 20.4 19.1 17.8 ...
$ unemploy : num 17 16.3 16 15.6 16 ...
$ v2x_polyarchy : num 0.491 0.485 0.508 ...
$ v2x_libdem : num 0.398 0.4 0.416 0.436 ...
$ v2x_partipdem : num 0.318 0.322 0.341 ...
$ v2x_delibdem : num 0.383 0.382 0.422 ...
$ v2x_egaldem : num 0.355 0.353 0.361 ...
$ ref_UNHCR_EU : int 3851 3720 5385 ...
$ ref_asyl_seekers_EU : int 667 504 543 ...
$ refugees_EU : int 4518 4224 5928 ...
$ Governance : num -2.87 -2.44 -3.18 ...
$ region : chr "Western Balkan" "Western Balkan" ...
When using plm() on this data, there are several issues, resulting in the error messages:
First, the error message occurs:
> Error in plm(Total_Net_ODA ~ logpop, logGDPpC, openness, import, export, :
> arguments 'restrict.matrix' and 'restrict.rhs' cannot yet be used for single equations
When resolving this by setting restrict.matrix = NULL and restrict.rhs = NULL, it cannot find most of the variables anymore.
So, I used pdata.frame() to deal with this. It actually works, but causes another problem.
I used the following code for the transformation:
ccomb <- comb
str(ccomb)
rowvec <- c(1:358)
make.unique(.rowNamesDF(ccomb, make.names = TRUE) <- as.character(rowvec))
unique(rownames(ccomb))
duplicated(rownames(ccomb))
ccomb <- pdata.frame(comb, index=c("Country.Name", "year"), row.names = FALSE)
modE<-plm(Total_Net_ODA ~ openness, import, export, index=c("Country.Name", "year"),data = ccomb, model="within")
So, the code results in this error message:
> Error in .rowNamesDF<-
(x, value = value) :
> duplicate 'row.names' not allowed
> In addition: Warning message:
> non-unique values when setting 'row.names': ‘19’, ‘21’, ‘22’, ‘23’, ‘24’, ‘25’, ‘26’, ‘27’, ‘28’, ‘29’, ‘30’, ‘31’, ‘32’, ‘33’, ‘34’, ‘35’, ‘36’, ‘37’, ‘38’, ‘39’, ‘40’, ‘41’, ‘42’, ‘43’, ‘44’, ‘45’, ‘46’, ‘47’, ‘48’, ‘49’, ‘50’, ‘51’, ‘52’, ‘53’, ‘54’, ‘55’, ‘56’, ‘58’, ‘59’, ‘60’, ‘61’, ‘62’, ‘63’, ‘64’, ‘65’, ‘66’, ‘67’, ‘68’, ‘69’, ‘71’, ‘73’, ‘76’, ‘78’
Which is weird, as the code above explicitly cancels out any nun-unique row names and the duplicated(rownames(ccomb))
line explicitly states FALSE to every row.
I hope that this information is sufficient. If not, please let me know.
Here is my session info, in case that helps:
─ Session info ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
setting value
version R version 4.2.2 (2022-10-31 ucrt)
os Windows 10 x64 (build 19044)
system x86_64, mingw32
ui RStudio
language (EN)
collate German_Germany.utf8
ctype German_Germany.utf8
tz Europe/Berlin
date 2023-02-23
rstudio 2022.12.0+353 Elsbeth Geranium (desktop)
pandoc 2.19.2 @ C:/Program Files/RStudio/resources/app/bin/quarto/bin/tools/ (via rmarkdown)
─ Packages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
package * version date (UTC) lib source
abind 1.4-5 2016-07-21 [1] CRAN (R 4.2.0)
backports 1.4.1 2021-12-13 [1] CRAN (R 4.2.0)
bayestestR 0.13.0 2022-09-18 [1] CRAN (R 4.2.2)
bdsmatrix 1.3-6 2022-06-03 [1] CRAN (R 4.2.0)
bit 4.0.5 2022-11-15 [1] CRAN (R 4.2.2)
bit64 4.0.5 2020-08-30 [1] CRAN (R 4.2.1)
bitops 1.0-7 2021-04-24 [1] CRAN (R 4.2.0)
boot 1.3-28.1 2022-11-22 [1] CRAN (R 4.2.2)
broom 1.0.3 2023-01-25 [1] CRAN (R 4.2.2)
cachem 1.0.6 2021-08-19 [1] CRAN (R 4.2.1)
callr 3.7.3 2022-11-02 [1] CRAN (R 4.2.2)
car * 3.1-1 2022-10-19 [1] CRAN (R 4.2.2)
carData * 3.0-5 2022-01-06 [1] CRAN (R 4.2.1)
caTools 1.18.2 2021-03-28 [1] CRAN (R 4.2.1)
cellranger 1.1.0 2016-07-27 [1] CRAN (R 4.2.1)
cli 3.6.0 2023-01-09 [1] CRAN (R 4.2.2)
coda 0.19-4 2020-09-30 [1] CRAN (R 4.2.1)
collapse 1.9.2 2023-01-25 [1] CRAN (R 4.2.2)
colorspace 2.1-0 2023-01-23 [1] CRAN (R 4.2.2)
crayon 1.5.2 2022-09-29 [1] CRAN (R 4.2.2)
datawizard 0.6.5 2022-12-14 [1] CRAN (R 4.2.2)
devtools * 2.4.5 2022-10-11 [1] CRAN (R 4.2.2)
digest 0.6.31 2022-12-11 [1] CRAN (R 4.2.2)
dplyr * 1.1.0 2023-01-29 [1] CRAN (R 4.2.2)
dreamerr 1.2.3 2020-12-05 [1] CRAN (R 4.2.1)
dyn * 0.2-9.6 2018-03-19 [1] CRAN (R 4.2.1)
ellipsis 0.3.2 2021-04-29 [1] CRAN (R 4.2.1)
emmeans 1.8.4-1 2023-01-17 [1] CRAN (R 4.2.2)
estimability 1.4.1 2022-08-05 [1] CRAN (R 4.2.1)
evaluate 0.20 2023-01-17 [1] CRAN (R 4.2.2)
fansi 1.0.4 2023-01-22 [1] CRAN (R 4.2.2)
farver 2.1.1 2022-07-06 [1] CRAN (R 4.2.1)
fastmap 1.1.0 2021-01-25 [1] CRAN (R 4.2.1)
fixest * 0.11.1 2023-01-10 [1] CRAN (R 4.2.2)
forcats * 1.0.0 2023-01-29 [1] CRAN (R 4.2.2)
foreign * 0.8-83 2022-09-28 [2] CRAN (R 4.2.2)
Formula 1.2-4 2020-10-16 [1] CRAN (R 4.2.0)
fs 1.6.1 2023-02-06 [1] CRAN (R 4.2.2)
generics 0.1.3 2022-07-05 [1] CRAN (R 4.2.1)
ggeffects 1.1.5 2023-01-25 [1] CRAN (R 4.2.2)
ggplot2 * 3.4.1 2023-02-10 [1] CRAN (R 4.2.2)
glue 1.6.2 2022-02-24 [1] CRAN (R 4.2.1)
gplots * 3.1.3 2022-04-25 [1] CRAN (R 4.2.1)
gtable 0.3.1 2022-09-01 [1] CRAN (R 4.2.1)
gtools 3.9.4 2022-11-27 [1] CRAN (R 4.2.2)
highr 0.10 2022-12-22 [1] CRAN (R 4.2.2)
hms 1.1.2 2022-08-19 [1] CRAN (R 4.2.2)
htmltools 0.5.4 2022-12-07 [1] CRAN (R 4.2.2)
htmlwidgets 1.6.1 2023-01-07 [1] CRAN (R 4.2.2)
httpuv 1.6.9 2023-02-14 [1] CRAN (R 4.2.2)
httr 1.4.4 2022-08-17 [1] CRAN (R 4.2.2)
insight 0.19.0 2023-01-30 [1] CRAN (R 4.2.2)
irr * 0.84.1 2019-01-26 [1] CRAN (R 4.2.1)
kableExtra * 1.3.4 2021-02-20 [1] CRAN (R 4.2.1)
KernSmooth 2.23-20 2021-05-03 [2] CRAN (R 4.2.2)
knitr 1.42 2023-01-25 [1] CRAN (R 4.2.2)
labeling 0.4.2 2020-10-20 [1] CRAN (R 4.2.0)
later 1.3.0 2021-08-18 [1] CRAN (R 4.2.1)
lattice 0.20-45 2021-09-22 [2] CRAN (R 4.2.2)
lifecycle 1.0.3 2022-10-07 [1] CRAN (R 4.2.2)
lme4 1.1-31 2022-11-01 [1] CRAN (R 4.2.2)
lmtest * 0.9-40 2022-03-21 [1] CRAN (R 4.2.1)
lpSolve * 5.6.18 2023-02-01 [1] CRAN (R 4.2.2)
lubridate * 1.9.2 2023-02-10 [1] CRAN (R 4.2.2)
magrittr 2.0.3 2022-03-30 [1] CRAN (R 4.2.1)
MASS 7.3-58.2 2023-01-23 [1] CRAN (R 4.2.2)
Matrix 1.5-3 2022-11-11 [1] CRAN (R 4.2.2)
maxLik 1.5-2 2021-07-26 [1] CRAN (R 4.2.0)
memoise 2.0.1 2021-11-26 [1] CRAN (R 4.2.1)
mgcv 1.8-41 2022-10-21 [1] CRAN (R 4.2.2)
mime 0.12 2021-09-28 [1] CRAN (R 4.2.0)
miniUI 0.1.1.1 2018-05-18 [1] CRAN (R 4.2.1)
minqa 1.2.5 2022-10-19 [1] CRAN (R 4.2.2)
miscTools 0.6-26 2019-12-08 [1] CRAN (R 4.2.1)
modelr 0.1.10 2022-11-11 [1] CRAN (R 4.2.2)
munsell 0.5.0 2018-06-12 [1] CRAN (R 4.2.1)
mvtnorm 1.1-3 2021-10-08 [1] CRAN (R 4.2.0)
nlme 3.1-162 2023-01-31 [1] CRAN (R 4.2.2)
nloptr 2.0.3 2022-05-26 [1] CRAN (R 4.2.1)
numDeriv 2016.8-1.1 2019-06-06 [1] CRAN (R 4.2.0)
pcse * 1.9.1.1 2018-06-07 [1] CRAN (R 4.2.0)
performance 0.10.2 2023-01-12 [1] CRAN (R 4.2.2)
pillar 1.8.1 2022-08-19 [1] CRAN (R 4.2.1)
pkgbuild 1.4.0 2022-11-27 [1] CRAN (R 4.2.2)
pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.2.1)
pkgload 1.3.2 2022-11-16 [1] CRAN (R 4.2.2)
plm * 2.6-2 2022-08-16 [1] CRAN (R 4.2.2)
prettyunits 1.1.1 2020-01-24 [1] CRAN (R 4.2.1)
processx 3.8.0 2022-10-26 [1] CRAN (R 4.2.2)
profvis 0.3.7 2020-11-02 [1] CRAN (R 4.2.1)
promises 1.2.0.1 2021-02-11 [1] CRAN (R 4.2.1)
ps 1.7.2 2022-10-26 [1] CRAN (R 4.2.2)
purrr * 1.0.1 2023-01-10 [1] CRAN (R 4.2.2)
R6 2.5.1 2021-08-19 [1] CRAN (R 4.2.1)
ragg 1.2.5 2023-01-12 [1] CRAN (R 4.2.2)
rbibutils 2.2.13 2023-01-13 [1] CRAN (R 4.2.2)
Rcpp 1.0.10 2023-01-22 [1] CRAN (R 4.2.2)
Rdpack 2.4 2022-07-20 [1] CRAN (R 4.2.1)
readr * 2.1.4 2023-02-10 [1] CRAN (R 4.2.2)
readxl * 1.4.2 2023-02-09 [1] CRAN (R 4.2.2)
remotes 2.4.2 2021-11-30 [1] CRAN (R 4.2.1)
rlang 1.0.6 2022-09-24 [1] CRAN (R 4.2.2)
rmarkdown 2.20 2023-01-19 [1] CRAN (R 4.2.2)
rstudioapi 0.14 2022-08-22 [1] CRAN (R 4.2.2)
rvest 1.0.3 2022-08-19 [1] CRAN (R 4.2.2)
sandwich * 3.0-2 2022-06-15 [1] CRAN (R 4.2.1)
scales 1.2.1 2022-08-20 [1] CRAN (R 4.2.1)
sessioninfo 1.2.2 2021-12-06 [1] CRAN (R 4.2.1)
shiny 1.7.4 2022-12-15 [1] CRAN (R 4.2.2)
sjlabelled 1.2.0 2022-04-10 [1] CRAN (R 4.2.1)
sjmisc 2.8.9 2021-12-03 [1] CRAN (R 4.2.1)
sjPlot * 2.8.12 2022-11-19 [1] CRAN (R 4.2.2)
sjstats 0.18.2 2022-11-19 [1] CRAN (R 4.2.2)
stargazer * 5.2.3 2022-03-04 [1] CRAN (R 4.2.0)
stringi 1.7.12 2023-01-11 [1] CRAN (R 4.2.2)
stringr * 1.5.0 2022-12-02 [1] CRAN (R 4.2.2)
svglite 2.1.1 2023-01-10 [1] CRAN (R 4.2.2)
systemfonts 1.0.4 2022-02-11 [1] CRAN (R 4.2.1)
texreg * 1.38.6 2022-04-06 [1] CRAN (R 4.2.1)
textshaping 0.3.6 2021-10-13 [1] CRAN (R 4.2.1)
tibble * 3.1.8 2022-07-22 [1] CRAN (R 4.2.1)
tidyr * 1.3.0 2023-01-24 [1] CRAN (R 4.2.2)
tidyselect 1.2.0 2022-10-10 [1] CRAN (R 4.2.2)
tidyverse * 2.0.0 2023-02-22 [1] CRAN (R 4.2.2)
timechange 0.2.0 2023-01-11 [1] CRAN (R 4.2.2)
tzdb 0.3.0 2022-03-28 [1] CRAN (R 4.2.1)
urlchecker 1.0.1 2021-11-30 [1] CRAN (R 4.2.1)
usethis * 2.1.6 2022-05-25 [1] CRAN (R 4.2.1)
utf8 1.2.3 2023-01-31 [1] CRAN (R 4.2.2)
vctrs 0.5.2 2023-01-23 [1] CRAN (R 4.2.2)
viridisLite 0.4.1 2022-08-22 [1] CRAN (R 4.2.1)
vroom 1.6.1 2023-01-22 [1] CRAN (R 4.2.2)
vtable * 1.4.1 2022-11-02 [1] CRAN (R 4.2.2)
webshot 0.5.4 2022-09-26 [1] CRAN (R 4.2.2)
withr 2.5.0 2022-03-03 [1] CRAN (R 4.2.1)
xfun 0.37 2023-01-31 [1] CRAN (R 4.2.2)
xml2 1.3.3 2021-11-30 [1] CRAN (R 4.2.1)
xtable * 1.8-4 2019-04-21 [1] CRAN (R 4.2.1)
zoo * 1.8-11 2022-09-17 [1] CRAN (R 4.2.2)
答案1
得分: 1
这行代码似乎有缺陷:
modE<-plm(Total_Net_ODA ~ openness, import, export, index=c("Country.Name", "year"),data = ccomb, model="within")
看起来你想要估计变量 import
和 export
的系数,所以你需要在第一个参数 formula
中指定它们,像这样:
modE<-plm(Total_Net_ODA ~ openness + import + export, index=c("Country.Name", "year"),data = ccomb, model="within")
你的命令将 import
和 export
作为 plm
的第二和第三参数传递,分别对应于 data
和 subset
参数。
英文:
This line seems flawed:
modE<-plm(Total_Net_ODA ~ openness, import, export, index=c("Country.Name", "year"),data = ccomb, model="within")
Seems like you want to estimate coefficients for variables import
and export
, so you would need to specify them within the formula
argument, the first argument, like so:
modE<-plm(Total_Net_ODA ~ openness + import + export, index=c("Country.Name", "year"),data = ccomb, model="within")
Your command inputs import
and export
as 2nd and 3rd argument to plm
, respectively, which is the data
and subset
argument.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论