英文:
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.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论