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
如何做到?
df1
的每个列名,如果在df2
中存在相应的列名,则进行更改。 - kittygirldf1 %>% table %>% data.frame(.) %>% \
colnames<-`(df2$altname[match(names(df1), df2$name)]),唯一不满意的是
Freq没有匹配,变成了
NA`。是否有办法在没有匹配时保持相同的列名? - kittygirlcoalesce
。虽然它对我有用,但在这里我正在使用rename_at
通过删除Freq
列来实现。 - akrun