2015-07-03 2 views
2

Я получаю следующие данные в Azure. Каждая строка является параметром, который имеет отношение к модели прогнозирования.Транспонирование и добавление столбца в R в студии Azure ML

Я относительно новичок в 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 
+0

Try 'MonYear <- формат (сл (as.Date ('2015-01-01'), as.Date ('2015-12-01'), по = 'месяц'), '% d-% m-% y'); df2 <- data.frame (MonYear, t (df1) [-1])); colnames (df2) [- 1] <- LETTERS [1: 4]; row.names (df2) <- NULL' – akrun

+0

Спасибо @akrun. Это сработало. Но мое единственное беспокойство заключается в том, что при переносе, преобразует ли он числа в строки? – AngryPanda

+0

Выполняя транспонирование ('t'), вы конвертируете в' matrix'. и матрица может содержать только один класс. Здесь я переношу только числовые столбцы и оставляю первый столбец 't (df1 [-1])', который не является числовым. Любой нечисловой элемент преобразует столбцы в класс 'character' – akrun

ответ

0

Создать "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 
Смежные вопросы