Я хочу изменить порядок строк в соответствии со списком элементов столбца. Вот пример такого списка:R В таблице данных изменить порядок строк
scenChoice <- c("X2010", "SSP2-NoCC-REF", "SSP1-NoCC-REF", "SSP3-NoCC-REF", "SSP2-GFDL-REF", "SSP2-IPSL-REF", "SSP2-HGEM-REF")
Вот вывод данных из таблицы данных, я использую:
scenario region_code value
SSP1-NoCC-REF lowInc 0.079897553
SSP2-GFDL-REF lowInc 0.119297969
SSP2-HGEM-REF lowInc 0.124730614
SSP2-IPSL-REF lowInc 0.121280208
SSP2-MIROC-REF lowInc 0.121459249
2010 lowInc 0.316646263
SSP2-NoCC-REF lowInc 0.115680977
SSP3-NoCC-REF lowInc 0.167769763
SSP1-NoCC-REF upMidInc 0.020520457
SSP2-GFDL-REF upMidInc 0.024871731
SSP2-HGEM-REF upMidInc 0.026223688
SSP2-IPSL-REF upMidInc 0.025594828
SSP2-MIROC-REF upMidInc 0.025523934
2010 upMidInc 0.063808085
SSP2-NoCC-REF upMidInc 0.023987357
SSP3-NoCC-REF upMidInc 0.027964746
SSP1-NoCC-REF highInc 0.014672749
SSP2-GFDL-REF highInc 0.015258928
SSP2-HGEM-REF highInc 0.016021142
SSP2-IPSL-REF highInc 0.015681295
SSP2-MIROC-REF highInc 0.015602455
2010 highInc 0.020245181
SSP2-NoCC-REF highInc 0.014812163
SSP3-NoCC-REF highInc 0.014574464
SSP1-NoCC-REF lowMidInc 0.033036779
SSP2-GFDL-REF lowMidInc 0.041298546
SSP2-HGEM-REF lowMidInc 0.043529098
SSP2-IPSL-REF lowMidInc 0.042395484
SSP2-MIROC-REF lowMidInc 0.042263571
2010 lowMidInc 0.092290532
SSP2-NoCC-REF lowMidInc 0.0395448
SSP3-NoCC-REF lowMidInc 0.04952689
Я думал, что следующий код будет создать новый столбец, scenarioOrder, со значениями между 1 и 6 в зависимости от положения значения сценария, которое я мог бы затем упорядочить таблицу данных.
DT[, scenarioOrder := which(scenario == scenChoice)]
Если я бегу which(scenario == scenChoice)
за пределами таблицы данных, он возвращает целое число от 1 до 6. Но в пределах таблицы данных, она создает новый столбец со значениями числа строк для одного из нескольких вхождений конкретного сценарий.
Как создать столбец stageOrder с записями между 1 и 6 в зависимости от того, где значение строки находится в заказе для scenChoice?
Если вы запустите его за пределами таблицы данных, вы используете какой-либо объект 'script' в глобальной среде вместо столбца таблицы данных. Также, я думаю, вы хотите'% in% ', поскольку '==' является векторизованным/элементным компаратором. – Frank
'DT [, sceneOrder: = match (scene, scenChoice)]'? – Jaap
Вы хотите, чтобы «сценарий» был «фактором» с уровнями, указанными 'scenChoice'. См. «Фактор» и «Уровни». – MichaelChirico