Транспонирование и добавление столбца в R в Azure ML Studio

Я получаю следующий набор данных в Azure. Каждая строка — это параметр, относящийся к модели прогнозирования.

Я относительно новичок в R. Я попробовал следующий код, но он не дает ожидаемого результата. После переноса набора данных я хочу добавить дополнительный столбец «Месяц-Год».

Кто-нибудь может мне помочь? Спасибо.

Набор данных

features    V1      V2      V3      V4      V5      V6      V7      V8      V9      V10     V11     V12
A           28.21   42.03   48.56   46.85   46.03   54.6    63.87   50      53.34   43.47   34.66   27.48
B           1333    1348.64 1364.28 1379.92 1395.56 1411.2  1426.84 1442.48 1458.11 1473.75 1489.39 1505.03
C           10.05   5.46    4.82    5.27    5.07    4.07    9.53    1.95    6.95    6.54    5.91    0.56
D           18.22   18.41   14.31   30.28   18.16   15.52   12.52   13.14   15.05   8.89    12.51   25.25

R-код

# Map 1-based optional input ports to variables
dataset <- maml.mapInputPort(1) 

a <- c("A", "B", "C", "D")

data.set <- cbind(a, dataset)
names(data.set)[1] <- c("features")

# first remember the names
n <- dataset$features

# transpose all but the first column (name)
df.aree <- as.data.frame(t(data.set[,-1]))
names(data.set)[1] <- n

df.aree$myfactor <- factor(row.names(df.aree))

maml.mapOutputPort("df.aree")

Ожидаемый результат

Month-Year  A       B           C       D
01-01-15    28.21   1333        10.05   18.22
01-02-15    42.03   1348.64     5.46    18.41
01-03-15    48.56   1364.28     4.82    14.31
01-04-15    46.85   1379.92     5.27    30.28
01-05-15    46.03   1395.56     5.07    18.16
01-06-15    54.6    1411.2      4.07    15.52
01-07-15    63.87   1426.84     9.53    12.52
01-08-15    50      1442.48     1.95    13.14
01-09-15    53.34   1458.11     6.95    15.05
01-10-15    43.47   1473.75     6.54    8.89
01-11-15    34.66   1489.39     5.91    12.51
01-12-15    27.48   1505.03     0.56    25.25

person AngryPanda    schedule 03.07.2015    source источник
comment
Попробуйте MonYear <- format(seq(as.Date('2015-01-01'), as.Date('2015-12-01'), by = 'month'), '%d-%m-%y'); df2 <- data.frame(MonYear,t(df1[-1]));colnames(df2)[-1] <- LETTERS[1:4];row.names(df2) <- NULL   -  person akrun    schedule 03.07.2015
comment
Спасибо @akrun. Это сработало. Но меня беспокоит только то, что при переносе он также преобразует числа в строки?   -  person AngryPanda    schedule 03.07.2015
comment
Выполняя транспонирование (t), вы конвертируете в matrix. и матрица может содержать только один класс. Здесь я перемещаю только числовые столбцы и оставляю первый столбец t(df1[-1]), который не является числовым. Любой нечисловой элемент преобразует столбцы в класс «символ».   -  person akrun    schedule 03.07.2015


Ответы (1)


Создайте «MonYear», используя seq с датами from и to.

 MonYear <- format(seq(as.Date('2015-01-01'), as.Date('2015-12-01'),
              by = 'month'), '%d-%m-%y')

Транспонируйте нечисловые столбцы в исходном наборе данных (вывод будет matrix. Мы создаем data.frame, комбинируя «MonYear» и вывод матрицы.

 df2 <- data.frame(MonYear,t(df1[-1]))

Измените имена столбцов и имена строк соответственно

 colnames(df2)[-1] <- LETTERS[1:4]
 row.names(df2) <- NULL
  df2 
 MonYear     A       B     C     D
1  01-01-15 28.21 1333.00 10.05 18.22
2  01-02-15 42.03 1348.64  5.46 18.41
3  01-03-15 48.56 1364.28  4.82 14.31
4  01-04-15 46.85 1379.92  5.27 30.28
5  01-05-15 46.03 1395.56  5.07 18.16
6  01-06-15 54.60 1411.20  4.07 15.52
7  01-07-15 63.87 1426.84  9.53 12.52
8  01-08-15 50.00 1442.48  1.95 13.14
9  01-09-15 53.34 1458.11  6.95 15.05
10 01-10-15 43.47 1473.75  6.54  8.89
11 01-11-15 34.66 1489.39  5.91 12.51
12 01-12-15 27.48 1505.03  0.56 25.25
person akrun    schedule 03.07.2015