Как заполнить / заполнить столбец dataframe значениями ячеек другого dataframe - PullRequest
0 голосов
/ 13 января 2020

У меня есть два кадра данных

enter image description here

enter image description here

В кадре данных 1 содержится около миллиона строк. и имеет два столбца с именами 'строка' и 'столбцы', в которых есть индекс строки и столбца другого фрейма данных (т. е. фрейма данных 2) ..

Я хочу извлечь значения из фрейма данных 2 с индексами указано в столбцах с именами «строка» и «столбцы» для каждой строки в dataframe1.

Я использовал простое для l oop, чтобы получить решение, но это отнимает много времени и занимает около 9 минут, есть ли другой способ с функциями в R для решения этой проблемы?

for(i in 1:nrow(datafram1)) {
  dataframe1$value[i] = dataframe2[dataframe1$row[i],dataframe1$columns[i]]
}

Ответы [ 3 ]

1 голос
/ 13 января 2020

Вам на самом деле не нужно, чтобы l oop сделал это. Просто добавьте новый столбец во фрейм данных, используя имена строк и столбцов:

DataFrame1$value <- DataFrame2[DataFrame1$row, DataFrame1$column]

Это должно работать намного быстрее. Если вы хотите попробовать по-другому, попробуйте добавить значения в новый вектор и затем использовать cbind, чтобы присоединить вектор к фрейму данных. Тот факт, что вы пытаетесь обновить весь фрейм данных в течение l oop, скорее всего замедляет его.

0 голосов
/ 13 января 2020

Может быть, вы можете попробовать код ниже

dataframe1$value <- dataframe2[as.matrix(dataframe1[c("row","columns")])]
0 голосов
/ 13 января 2020

Sionce your l oop учитывает только строки в df1, вы можете обрезать лишнюю икру на df2 и затем использовать cbind:

dataframe2 <- dataframe2[nrow(dataframe1),]
df3 <- cbind(dataframe1, dataframe2)
...