Распечатка нескольких столбцов в фрейме данных R - PullRequest
1 голос
/ 23 марта 2020

У меня есть фрейм данных со значениями для нескольких макропеременных. Когда я вычисляю журнал значений, а затем регистрирую различия, он превращает переменные в списки, что впоследствии вызывает проблемы с моим сценарием.

Пример кода:

#Compute log of relevant macrovariables
macro[,c("hp", "unem", "m1", "inc")] <- log(macro[,c("hp", "unem", "m1", "inc")])
colnames(macro)[2:5] <- paste(colnames(macro)[2:5], "log", sep = "_")

#Computing log differences
macro$ldiff_hp <- c(-diff(macro$hp_log), na.omit) 

Я пытаюсь отменить выбор столбцов и преобразовать их в цифры c одним из следующих способов:

#Alternative 1
macro[,15:19]<- unlist(as.numeric(macro[,15:19]))
#Alternative 2
macro[,15:19] <- sapply(macro[,15:19],as.numeric)

Это дает мне следующий вывод ошибки:

> macro[,15:19]<- unlist(as.numeric(macro[,15:19]))
Error in unlist(as.numeric(macro[, 15:19])) : 
  (list) object cannot be coerced to type 'double'

1 Ответ

0 голосов
/ 23 марта 2020

Используя набор данных economics из ggplot2 в качестве примера данных и используя функцию dplyr s lag, логарифмически разностные переменные можно вычислить так:

library(ggplot2)
library(dplyr)

macro <- ggplot2::economics

vars <- c("uempmed", "psavert")
vars_log <- paste(vars, "log", sep = "_")
vars_ldiff <- paste(vars, "ldiff", sep = "_")

#Compute log of relevant macrovariables
macro[, vars_log] <- sapply(macro[, vars], log)
# Lag values
macro[, vars_ldiff] <- sapply(macro[, vars_log], dplyr::lag)
# First Difference of logs
macro[, vars_ldiff] <- macro[, vars_log] - macro[, vars_ldiff]

macro
#> # A tibble: 574 x 10
#>    date         pce    pop psavert uempmed unemploy uempmed_log psavert_log
#>    <date>     <dbl>  <dbl>   <dbl>   <dbl>    <dbl>       <dbl>       <dbl>
#>  1 1967-07-01  507. 198712    12.6     4.5     2944        1.50        2.53
#>  2 1967-08-01  510. 198911    12.6     4.7     2945        1.55        2.53
#>  3 1967-09-01  516. 199113    11.9     4.6     2958        1.53        2.48
#>  4 1967-10-01  512. 199311    12.9     4.9     3143        1.59        2.56
#>  5 1967-11-01  517. 199498    12.8     4.7     3066        1.55        2.55
#>  6 1967-12-01  525. 199657    11.8     4.8     3018        1.57        2.47
#>  7 1968-01-01  531. 199808    11.7     5.1     2878        1.63        2.46
#>  8 1968-02-01  534. 199920    12.3     4.5     3001        1.50        2.51
#>  9 1968-03-01  544. 200056    11.7     4.1     2877        1.41        2.46
#> 10 1968-04-01  544  200208    12.3     4.6     2709        1.53        2.51
#> # ... with 564 more rows, and 2 more variables: uempmed_ldiff <dbl>,
#> #   psavert_ldiff <dbl>

Создано в 2020-03-23 ​​пакетом Представления (v0.3.0)

...