R语言技术问询:如何用标签替换数据框列名并保证采样值一致
解决方法:替换数据框列名为对应标签
你之前的问题出在重新生成了采样数据,所以want和data的值不一样——其实根本不需要重新调用sample,直接把data的列名替换成names里的对应标签就可以保留原数据啦!
下面是修正后的代码,我把原来的names改名为names_df(避免和R内置的names()函数冲突,这是个好习惯):
set.seed(0) data <- data.frame("V1"=sample(1:10,size=4,rep=T), "V2"=sample(1:10,size=4,rep=T), "V3"=sample(1:10,size=4,rep=T), "V4"=sample(1:10,size=4,rep=T)) # 重命名为names_df,避免和内置函数冲突 names_df <- data.frame("vars"=c("V1", "V2", "V3", "V4"), "labels"=c("whale","toast","cheese","cow")) # 复制原数据到want,保留所有值 want <- data # 用match匹配原列名和vars的对应关系,替换为标签 colnames(want) <- names_df$labels[match(colnames(want), names_df$vars)] # 验证结果:data和want的数据完全一致,只有列名不同 data want
补充说明:
- 用
match的好处是不管names_df里的vars顺序是否和data列名一致,都能准确匹配对应的标签,不会出错。 - 如果确定
names_df的vars顺序和data列名完全对应,也可以直接用colnames(want) <- names_df$labels,但match的写法更健壮。
内容的提问来源于stack exchange,提问作者bvowe
相关产品推荐
相关产品推荐

