В data.table это можно сделать в одну строку ....
dcast(DT, Respondent ~ Question, value.var = c("CS", "Imp"), sep = "")[DT, `:=`(LOS = i.LOS, Type = i.Type, Hotel = i.Hotel), on = "Respondent"][]
blockquote>Respondent CSQ1 CSQ2 ImpQ1 ImpQ2 LOS Type Hotel 1: 1 Fully Applied Optimized High Critical 12 SML ABC
объяснено шаг за шагом
создание выборочных данных
DT <- fread("Respondent Question CS Imp LOS Type Hotel 1 Q1 'Fully Applied' High 12 SML ABC 1 Q2 'Optimized' Critical 12 SML ABC", quote = '\'')
приведение части данных в желаемом формате по запросу
имена столбцов могут быть не такими, как вы хотите ... вы всегда можете изменить их, используяsetnames()
.dcast(DT, Respondent ~ Question, value.var = c("CS", "Imp"), sep = "") # Respondent CSQ1 CSQ2 ImpQ1 ImpQ2 # 1: 1 Fully Applied Optimized High Critical
Затем присоединитесь по ссылке в оригинальном DT, чтобы получить остальные необходимые вам столбцы ...
result.from.dcast[DT, `:=`( LOS = i.LOS, Type = i.Type, Hotel = i.Hotel), on = "Respondent"]
Я нахожусь на Visual Studio, 2013 и просто обновленный к обновлению Windows 10 May 2019 и компилирующий внезапно должен был быть восстановлен каждый раз, независимо от изменений. Испытанное переименование pch к ProjectName вместо TargetName, искал недостающие файлы с подробным журналом и что сценарий Python, но в конце это было мое время, не синхронизировался с серверами MS (подобными миллисекундами).
, Что решило, это для меня было
Теперь, мои проекты не должны быть перекомпилированы ни по какой причине.
Большинство систем сборки используют метки времени данных, чтобы определить, когда должно произойти перестроение - метка даты / времени любых выходных файлов сравнивается с временем последнего изменения файла зависимости - если какая-либо из зависимостей более свежая, то цель перестраивается.
Это может вызвать проблемы, если какая-либо из зависимостей каким-либо образом получит недопустимую метку времени данных, поскольку метка времени любого вывода сборки сложно когда-либо превысить метку времени файла, предположительно созданного в будущем: P
{{ 1}}Независимо от того, проекты .NET всегда перекомпилируются. Частично это делается для того, чтобы поддерживать IDE в актуальном состоянии (например, IntelliSense). Я помню, как много лет назад задавал этот вопрос на форуме Microsoft, и это был ответ, который мне дали.
Это случилось со мной сегодня. Мне удалось отследить причину: проект включал файл заголовка, которого больше не существовало на диске.
Удаление файла из проекта решило проблему.