Я пытаюсь изучить R, и у меня есть вопрос по изменению следующего набора данных.
bankname,date,year,month,quarter,totalliabilities,corr1,amt1,corr2,amt2
Bank of Pittsgurgh,2/7/1950,1950,2,1,237991,#N/A,#N/A,#N/A,#N/A
Bank of Pittsgurgh,5/2/1950,1950,5,2,258865,#N/A,#N/A,#N/A,#N/A
Bank of Pittsgurgh,8/7/1950,1950,8,3,218524,#N/A,#N/A,#N/A,#N/A,#N/A
Bank of Pittsgurgh,11/6/1950,1950,11,4,237520,First Bank,17472,Third Bank,30711
The Arsenal Bank,2/2/1950,1950,2,1,218508,#N/A,#N/A,#N/A,#N/A
The Arsenal Bank,5/3/1950,1950,5,2,224110,#N/A,#N/A,#N/A,#N/A
The Arsenal Bank,8/2/1950,1950,8,3,216071,#N/A,#N/A,#N/A,#N/A
The Arsenal Bank,11/1/1950,1950,11,4,226166,National Bank,20966,Trust Company,873
Когда я запускаю следующий код для изменения формы, я получаю следующую ошибку. Как я могу это исправить? Кроме того, я хотел бы преобразовать переменную amt в числовые переменные и удалить #NA в этом наборе данных. Как я могу удалить эту переменную?
-Сначала я попытался создать "id"
bank_test2$id<-as.numeric(as.factor(bank_test2$bankname))
-Затем я попытался создать уникальную временную переменную, используя год и квартал.
bank_test2$yq<-as.factor(paste(as.character(bank_test2$year),as.character(bank_test2$quarter)))
bank_test2<-bank_test2[with(bank_test2, order(yq,id)),]
-Изменить форму данных
v <- outer(c("corr", "amt"), c(1:2), FUN=paste0)
bank_test2<-reshape(bank_test2, direction='long', varying=c(v), sep='')
Error in `row.names<-.data.frame`(`*tmp*`, value = paste(d[, idvar], times[1L], :
duplicate 'row.names' are not allowed
In addition: Warning message:
non-unique values when setting 'row.names': ‘1.1’, ‘2.1’
id, bankname, date, year, month, quarter, totalliabilities, node, corr, amt
1, Bank of Pittsgurgh, 2/7/1950, 1950, 2, 1, 237991, 1, #N/A, #N/A
1, Bank of Pittsgurgh, 5/2/1950, 1950, 5, 2, 258865, 1, #N/A, #N/A
1, Bank of Pittsgurgh, 8/7/1950, 1950, 8, 3, 218524, 1, #N/A, #N/A
1, Bank of Pittsgurgh, 11/6/1950, 1950, 11, 4, 237520, 1, First Bank, 21906
1, Bank of Pittsgurgh, 2/7/1950, 1950, 2, 1, 237991, 2, #N/A, #N/A
1, Bank of Pittsgurgh, 5/2/1950, 1950, 5, 2, 258865, 2, #N/A, #N/A
1, Bank of Pittsgurgh, 8/7/1950, 1950, 8, 3, 218524, 2, #N/A, #N/A
1, Bank of Pittsgurgh, 11/6/1950, 1950, 11, 4, 237520, 2, Third Bank, 4442
2, The Arsenal Bank, 2/2/1950, 1950, 2, 1, 218508, 1, #N/A, #N/A
2, The Arsenal Bank, 5/3/1950, 1950, 5, 2, 224110, 1, #N/A, #N/A
2, The Arsenal Bank, 8/2/1950, 1950, 8, 3, 216071, 1, #N/A, #N/A
2, The Arsenal Bank, 11/1/1950, 1950, 11, 4, 226166, 1, National Bank, 43224
2, The Arsenal Bank, 2/2/1950, 1950, 2, 1, 218508, 2, #N/A, #N/A
2 The Arsenal Bank, 5/3/1950, 1950, 5, 2, 224110, 2, #N/A, #N/A
2 The Arsenal Bank, 8/2/1950, 1950, 8, 3, 216071, 2, #N/A, #N/A
2 The Arsenal Bank, 11/1/1950, 1950, 11, 4, 226166, 2, Trust Company, 3682
Я хочу, чтобы данные были организованы таким образом, с вновь созданным идентификатором банка из «bankname» и созданием уникальных имен с использованием идентификатора и значения времени. Затем я хочу удалить все #NA из набора данных.
Как мне это сделать?
Заранее спасибо.
dput(bank_test2[1:20,])
. - person IRTFM   schedule 10.09.2014