0

这是我目前拥有的代码的传真

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"])

ETC

Clean_Code 和 Code_test 都是 200000 行。Code_test 是 32 个唯一命名的变量,每个变量都以相同的方式添加到 Clean_Code 的不同位置。

我可以使用多光标向每一行添加一些代码,但我想避免必须单独更改所有 28 个变量输入。理想情况下,有一些东西可以让我更改并将 code_test 中的字符变量添加到 Clean_Code,同时还可以从 Code_test 中获取相应的 var 名称并将它们应用于 Clean_Code。

提前致谢。ps 也对不同的方法开放,因为我可能不得不为我接下来的 2 个数据集编写类似任务的代码......

4

1 回答 1

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_namescode_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]
于 2020-11-25T05:00:26.900 回答