Используя ссылочную таблицу, я пытаюсь повторно найти данные из нескольких столбцов в строки, сохраняя некоторые важные поля (другие столбцы).R for loop to slooow
Name Amplitude A B
M2 3.264 29.0 28.98
S2 0.781 51.9 30.0
N2 0.63 12.3 28.43
K1 1.263 136.8 15.04
M4 0.043 286.0 57.96
Я получил окончательные результаты, как это:
Name Amplitude Value Code
M2 3.264 29.0 A
S2 0.781 51.9 A
N2 0.63 12.3 A
K1 1.263 136.8 A
M4 0.043 286.0 B
M2 3.264 28.98 B
S2 0.781 30.0 B
N2 0.63 15.04 B
K1 1.263 57.96 B
Это просто пример, у меня есть несколько столбцов от амплитуды до А в первой таблице. Я использую следующий код:
Final<-NULL
colname<-colnames(ReferenceAll)
for (i in (1:nrow(ReferenceAll))){
for (j in (1:ncol(ReferenceAll))){
if (j>2) { # the number is from the column I want to get in the results
temp<-as.data.frame(rbind(cbind(Name=ReferenceAll[i,1],
Amplitude=as.character.factor(ReferenceAll[i,2]),
Value=ReferenceAll[i,j],
Code=colname[j])))
Final<-rbind(Final,temp)}}}
Когда у меня есть несколько строк, затрачиваемое миллисекунды, но когда у меня есть более чем 100 строк она занимает несколько часов. Может кто-нибудь мне помочь?
'библиотека (reshape2); расплава (DF1, id.vars = с ("Name", "Амплитуда"), value.name = "Значение", variable.name = "Код")' – RHertel
база R: 'reshape (df, variable = c (" A "," B "), direction =" long ", v.names = c (" Value "), times = c (" A "," B ")) ' – Zelazny7