#r #dataframe
#r #фрейм данных
Вопрос:
это факсимиле кода, который у меня есть на данный момент
state_abbr1<- rnorm(8,5,2)
county_code1<- rnorm(8,5,2)
county_name1<- rnorm(8,5,2)
Patient_ID <-c("13962830","20111947", "58786237", "57991640", "79365970", "84356256", "81640916", "71119659")
Sex <-c( "Male", "Female", "Female", "Male","Female", "Female", "Female", "Female")
Code_test1 <-cbind.data.frame(Patient_ID, Sex)
Clean_Code1<-cbind.data.frame(state_abbr1,county_name1,county_code1)
Clean_Code1[4:32]<-NA
Clean_Code1[,5] <- as.numeric(Code_test1[,"Patient_ID" ])
Clean_Code1[,7] <- as.factor(Code_test1[,"Sex"])
и т. д
Clean_Code и Code_test — это 200000 строк. и Code_test — это 32 переменные с уникальными именами, каждая из которых добавляется в Clean_Code одинаково в разных позициях.
Я мог бы добавить некоторый код к каждой строке с помощью мультикурсора, но я бы хотел избежать необходимости индивидуально изменять все 28 входных переменных. В идеале есть что-то, что позволит мне изменять и добавлять символьные переменные из code_test в Clean_Code, а также брать соответствующие имена переменных из Code_test и применять их к Clean_Code.
Заранее спасибо. p.s. также открыт для разных методов, поскольку мне, вероятно, придется писать код для аналогичных задач для моих следующих 2 наборов данных…
Комментарии:
1. Не могли бы вы добавить воспроизводимый пример? и каков ожидаемый результат?
2. отредактировано для вас.
Ответ №1:
Создайте вектор с индексом столбца, который вы хотите заменить Clean_Code
. Обратите внимание, что вы можете использовать :
для создания последовательности индексов, если они являются последовательными, если они не добавляются вручную. Создайте аналогичный вектор для Code_test
. Для Code_test
вы можете создать вектор индекса столбца или имен столбцов, в зависимости от того, что проще. Оба они должны работать.
clean_code_index <- c(5, 7, 8:12, 15, ....)
code_test_index <- c(1:3, 6,9, .....)
code_test_names <- c("Patient ID", "Sex", .....)
Затем вы можете скопировать значения напрямую.
#with index
Clean_Code[clean_code_index] <- Code_test[code_test_index]
#Or with names
Clean_Code[clean_code_index] <- Code_test[code_test_names]
Используйте любой из них сверху, чтобы скопировать значения.
Для копирования имен вы можете использовать code_test_names
или code_test_index
в зависимости от того, что вы создали.
#With names
names(Clean_Code)[clean_code_index] <- code_test_names
#Or with index
names(Clean_Code)[clean_code_index] <- names(Code_test)[code_test_index]
Комментарии:
1. Если я понимаю, что вы сделали, это не должно иметь значения, но я отредактировал свой пост, чтобы предоставить факсимиле данных, с которыми я работаю.
2. Вы пробовали мой ответ? Это дало вам какую-либо ошибку? Можете ли вы также обновить свой пост ожидаемым результатом, чтобы я мог сравнить свой ответ с этим?
3. В итоге я использовал половину вашего ответа. В основном потому, что я не был уверен, как применять индексы в моем конкретном случае
4. Я делаю еще одну попытку в другой ситуации, используя вашу технику, и я хотел спросить ваше мнение, так как это не совсем работает, но я не уверен, какой лучший способ показать вам мой код…
5. Лучшим способом было бы задать новый вопрос, чтобы вы могли получить помощь легко и быстрее.