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

etc

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

我可以使用多光标为每行添加一些代码,但我希望避免不得不单独更改所有28个变量的输入。理想情况下,有一些东西可以让我更改并添加从code_test到Clean_code的字符变量,同时也可以从code_test中获取相应的var名称并将其应用于Clean_code

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

创建一个具有列索引的向量,以便在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]

最新更新