如何解决根据另一个数据帧中的键更改 R 中的变量名称 更新数据
假设我在 R 中有一个数据集,其中包含名为 dog
cat
和 cow
的变量。然后每个变量下都有一些值(即,如果受访者拥有一个,则每个值为 =1,否则为 =0):
household_ID dog cat cow
00001 0 1 1
00002 1 0 1
00003 0 0 0
假设我有另一个数据集,其中一列包含我的当前变量,另一列包含新变量名称,这样每一行都包含应替换旧名称的新名称:
oldname newname
dog canine
cat feline
cow bovine
在这个过于简化的示例中,我的目标是使用第二个数据集替换第一个数据集的变量名称。我在想象你 replace var = newname if var = oldname
的某种循环,但我无法获得正确的语法,我有点难住。这是我假设的目标:
household_ID canine feline bovine
00001 0 1 1
00002 1 0 1
00003 0 0 0
解决方法
如果'cow'是第二个数据中'oldname'的第三个值,我们可以使用rename_with
library(dplyr)
df1 <- df1 %>%
rename_with(~ df2$newname,df2$oldname)
-输出
df1
household_ID canine feline bovine
1 1 0 1 1
2 2 1 0 1
3 3 0 0 0
或者可以使用 setnames
中的 data.table
library(data.table)
setDT(df1)
setnames(df1,df2$oldname,df2$newname)
更新
如果OP的数据有'dog1'、'dog2'、'cat1'、'cat2'等列,并且想用canine1
、canine2
等替换,我们可以使用{{ 1}}
str_replace_all
-输出
library(stringr)
library(tibble)
names(df1new)[-1] <- str_replace_all(names(df1new)[-1],deframe(df2))
数据
df1new
household_ID canine1 feline1 bovine1 canine2 feline2
1 1 0 1 1 0 1
2 2 1 0 1 1 0
3 3 0 0 0 0 0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。