用相等长度的新列替换数据框中的选择列

时间:2014-03-11 15:34:59

标签: r dataframe

我有一个数据框,我将调用" abs.data"包含265列(变量)。我有另一个数据框,我将称之为" corr.abs"包含" abs.data"中列的子集的更新数据。两个数据帧具有相等的行数,n = 551。我需要更换" abs.data"中的列。在" corr.abs"中正确观察列名匹配的位置。我试过以下

abs.samps <- colnames(abs.data) #vector of column names in abs. data

corr.abs.samps <- colnames(corr.abs) #vector of column names in corr.abs

abs.data[,which(abs.samps %in% corr.abs.samps==TRUE)] <- corr.abs[,which(corr.abs.samps %in% abs.samps==TRUE)] #replace columns in abs.data with correct observations in corr.abs where the column names are the same

当我运行最后一行代码的左侧和右侧时,R拉出右列,但无法用corr.abs中的正确数据替换abs.data中的列。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用

找到常用列名
comm_col <- intersect(colnames(abs.samps), colnames(corr.abs))

例如。你发现X2是常见的列

你可以先删除列,在这种情况下,你不希望使用子集的abs.samps中的X2

 x<-subset(abs.samps, select = -X2)

然后您可以将新列(例如列名X2)添加到新数据框

 y<-cbind(corr.abs$X2,x)