Я новый пользователь R и новый для StackOverflow. Я сделаю все возможное, чтобы кратко и четко задать свой вопрос и извиниться, если он не будет передан наилучшим образом.переупорядочивание строк в dataframe в соответствии с порядком строк в другом информационном кадре
Я работаю с двумя кадрами данных. Я хочу изменить порядок строк одного фрейма данных так, чтобы он был идентичен порядку строк во втором ядре данных, поэтому я могу добавлять данные от одного к другому, причем их форматы являются одинаковыми. Столбец, который я хочу изменить порядок строк, представляет собой столбец с идентификаторами строковых символов различных областей наблюдения.
Первый dataframe "dfverif" выглядит (в целом), как
Variable Value
DAFQX 9
DAFQX 9
DAFQX 9
DAFQX 9
DAHEI 9
DAHEI 9
DAHEI 9
DAHEI 9
BAARG 9
BAARG 9
BAARG 9
BAARG 9
CBUCG 9
CBUCG 9
CBUCG 9
CBUCG 9
DALZZ 9
DALZZ 9
DALZZ 9
DALZZ 9
Второй dataframe "dfmax" выглядит
variable value
DALZZ 2.14
DALZZ 2.02
DALZZ 2.04
CBUCG 1.83
CBUCG 2.09
CBUCG 1.96
CBUCG 1.98
DAHEI 2.25
DAHEI 2.05
DAHEI 2.08
DAFQX 2.12
DAFQX 2.12
DAFQX 2.04
BAARG 2.12
BAARG 2.56
BAARG 2.56
Я хочу, чтобы изменить порядок строк второго dataframe в терминах порядка строк символьного вектора в первом кадре данных. Но есть много повторяющихся строк, потому что это данные временного ряда, поэтому я не могу использовать совпадение, и я не могу удалить дубликаты, потому что они содержат необходимые данные. Кроме того, второй блок данных намного меньше первого (это максимальные значения данных временного ряда, а не сырые наблюдения). Я знаю, что ограничивает cbind и rbind, но при необходимости можно использовать rbind.fill и cbindX, хотя я не уверен, что они здесь. На самом деле эти dataframes имеют больше столбцов, но я только включил здесь 2 для краткости.
Основываясь на вопрос здесь Order data frame rows according to a target vector that specifies the desired order
Я пытался делать это код
target <- dfverif
idx <- sapply(target,function(x){
which(dfmax$variable==x)
})
idx <- unlist(idx) ##I added this because the code gave me errors because idx is classified as a list so R couldn't do the dfmax[idx,] component
dfmax <- dfmax[idx,]
rownames(dfmist) <- NULL
Но теперь, когда я голову (dfmax) Я получаю
[1] V1 V2
<0 rows> (or 0-length row.names)
Что я не могу сделать смысл, и когда я делаю str (dfmax), я получаю тот же порядок символов, что и раньше, ничего не изменилось. Я лаяю неправильное дерево? Есть ли другой способ приблизиться к этому, о котором я не знаю? Или я пытаюсь выполнить эту функцию неправильно?
Благодарим вас за внимание и помощь.
теперь я вижу, что, но использование order (match (,)) все равно должен преуспеть, не так ли? –
Мой ответ на самом деле породил неправильный результат, поэтому я удалил его. Твой путь: –
Работал нормально в тестовых случаях, которые я сделал; Вы должны опубликовать в качестве редактирования в своем вопросе вывод 'dput (head (dfmax))' и 'dput (head (dverif))'. –