df1 <- data.frame(
cola = c('1',NA,'c','1','1','e','1',NA,'c','d'),
colb = c("A",NA,"C","D",'a','b','c','d','c','d'),
colc = c('a',NA,'c','d','a',NA,'c',NA,'c','d'),stringsAsFactors = TRUE)
df2<-data.frame(name=c('cola','colc','colb'),
altname=c('a','c','b'))
df1 %>% table %>% data.frame(.)
上述代码的结果为:
cola colb colc Freq
1 1 a a 1
2 c a a 0
我想根据df2
更改结果的列名(例如,将colb
更改为b
),预期结果为:
a b c Freq
1 1 a a 1
2 c a a 0
怎么做?
2条答案
按热度按时间aydmsdu91#
我们可以只删除子串
rename_at
或者如果需要从'df 2'
更新
如果“df 1”中的所有列名都不在“df 2”的key/瓦尔列中,则选项为
或者使用碱基R
如果需要基于第二个数据集
substr
xe55xuns2#
这是我在研究同一问题时最受欢迎的线程之一。最近的
dplyr
版本已经使这变得更容易,如果你使用一个命名的向量,并利用any_of
函数,这使得它非常宽容,当你有列名可能在df2中,但不存在于df1。使用您的案例,您可以:或者作为嵌入式一行程序:
参考:https://dplyr.tidyverse.org/reference/rename.html