Matrix / Array from Panel Series
psmat
efficiently expands a panel-vector or plm::pseries
into a matrix. If a data frame or plm::pdata.frame
is passed, psmat
returns (default) a 3D array or a list of matrices.
psmat(x, ...) ## Default S3 method: psmat(x, g, t = NULL, transpose = FALSE, ...) ## S3 method for class 'pseries' psmat(x, transpose = FALSE, ...) ## S3 method for class 'data.frame' psmat(x, by, t = NULL, cols = NULL, transpose = FALSE, array = TRUE, ...) ## S3 method for class 'pdata.frame' psmat(x, cols = NULL, transpose = FALSE, array = TRUE, ...) ## S3 method for class 'psmat' plot(x, legend = FALSE, colours = legend, labs = NULL, ...)
x |
a vector, panel series ( |
g |
a factor, |
by |
data.frame method: Same input as |
t |
same inputs as |
cols |
data.frame method: Select columns using a function, column names, indices or a logical vector. Note: |
transpose |
logical. |
array |
data.frame / pdata.frame methods: logical. |
... |
arguments to be passed to or from other methods, or for the plot method additional arguments passed to |
legend |
logical. Automatically create a legend of panel-groups. |
colours |
logical. Automatically colour by panel-groups. |
labs |
character. Provide a character-vector of variable labels / series titles when plotting an array. |
For plm::pseries
, the first index
variable is taken to be the group-id and the second the time variable. If more than 2 index variables are attached to plm::pseries
, the last one is taken as the time variable and the others are taken as group-id's and interacted.
A matrix or 3D array containing the data in x
, where by default the rows constitute the groups-ids (g/by
) and the columns the time variable or individual ids (t
). 3D arrays contain the variables in the 3rd dimension. The objects have a class 'psmat', and also a 'transpose' attribute indicating whether transpose = TRUE
.
The pdata.frame
method only works for properly subsetted objects of class 'pdata.frame'. A list of 'pseries' won't work. There also exist simple aperm
and [
(subset) methods for 'psmat' objects. These differ from the default methods only by keeping the class and the 'transpose' attribute.
## World Development Panel Data head(wlddev) # View data qsu(wlddev, pid = ~ iso3c, cols = 9:12, vlabels = TRUE) # Sumarizing data str(psmat(wlddev$PCGDP, wlddev$iso3c, wlddev$year)) # Generating matrix of GDP r <- psmat(wlddev, PCGDP ~ iso3c, ~ year) # Same thing using data.frame method plot(r, main = vlabels(wlddev)[9], xlab = "Year") # Plot the matrix str(r) # See srructure str(psmat(wlddev$PCGDP, wlddev$iso3c)) # The Data is sorted, could omit t str(psmat(wlddev$PCGDP, 216)) # This panel is also balanced, so # ..indicating the number of groups would be sufficient to obtain a matrix ar <- psmat(wlddev, ~ iso3c, ~ year, 9:12) # Get array of transposed matrices str(ar) plot(ar) plot(ar, legend = TRUE) plot(psmat(collap(wlddev, ~region+year, cols = 9:12), # More legible and fancy plot ~region, ~year), legend = TRUE, labs = vlabels(wlddev)[9:12]) psml <- psmat(wlddev, ~ iso3c, ~ year, 9:12, array = FALSE) # This gives list of ps-matrices head(unlist2d(psml, "Variable", "Country", id.factor = TRUE),2) # Using unlist2d, can generate DF ## Using plm simplifies things pwlddev <- plm::pdata.frame(wlddev, index = c("iso3c","year")) # Creating a Panel Data Frame PCGDP <- pwlddev$PCGDP # A panel-Series of GDP per Capita head(psmat(PCGDP), 2) # Same as above, more parsimonious plot(psmat(PCGDP)) plot(psmat(pwlddev[9:12])) plot(psmat(G(pwlddev[9:12]))) # Here plotting panel- growth rates
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.