替换 r 中两个数据帧之间的所有列值
Replacing all column values between two dataframes in r
我有两个数据框。一个包含对我正在研究的主题的观察。但是,由于调查,变量从显示参与者的国家名称转换为数字,因此我下载了一个 table,其中国家代码(例如 31 是加拿大等)在 df 中,其中包含数字和国家。
我想用第二个数据框中的国家替换原始数据框中的数字,但每次都失败。
这里我使用了一个示例数据框:
df1 <- data.frame(list(Country=c("1","3","4","2"), Obs=c("Stuff1","Stuff2","Stuff3","Stuff4")))
df2 <- data.frame(list(Number=c("1","2","3","4"), Country=c("C1","C2","C3","C4")))
我想要的结果是df1中的Country变量由数字转换为国名(我的数据集中都是字符变量包括国家数字,如果更好可以转换为数字)。
到目前为止,我在尝试以下操作后都失败了:
df1 <- df1 %>%
mutate_at(c("Country"), funs(recode(.,'df1[,1]'=df2[,2])))
和
df1$newcountry <- data$Country[match(df1$Country, df2$Country)]
这个有用吗:
library(dplyr)
df1 %>% inner_join(df2, by = c('Country' = 'Number')) %>%
rename(N = Country, Country = Country.y) %>% select(-1)
Obs Country
1 Stuff1 C1
2 Stuff2 C3
3 Stuff3 C4
4 Stuff4 C2
library(tidyverse)
df1 <- data.frame(list(Country=c("1","3","4","2"),
Obs=c("Stuff1","Stuff2","Stuff3","Stuff4")))
df2 <- data.frame(list(Number=c("1","2","3","4"),
Country=c("C1","C2","C3","C4")))
df1 %>% rename(Number = Country) %>%
left_join(df2, by = "Number")
Number Obs Country
1 1 Stuff1 C1
2 3 Stuff2 C3
3 4 Stuff3 C4
4 2 Stuff4 C2
我有两个数据框。一个包含对我正在研究的主题的观察。但是,由于调查,变量从显示参与者的国家名称转换为数字,因此我下载了一个 table,其中国家代码(例如 31 是加拿大等)在 df 中,其中包含数字和国家。 我想用第二个数据框中的国家替换原始数据框中的数字,但每次都失败。
这里我使用了一个示例数据框:
df1 <- data.frame(list(Country=c("1","3","4","2"), Obs=c("Stuff1","Stuff2","Stuff3","Stuff4")))
df2 <- data.frame(list(Number=c("1","2","3","4"), Country=c("C1","C2","C3","C4")))
我想要的结果是df1中的Country变量由数字转换为国名(我的数据集中都是字符变量包括国家数字,如果更好可以转换为数字)。
到目前为止,我在尝试以下操作后都失败了:
df1 <- df1 %>%
mutate_at(c("Country"), funs(recode(.,'df1[,1]'=df2[,2])))
和
df1$newcountry <- data$Country[match(df1$Country, df2$Country)]
这个有用吗:
library(dplyr)
df1 %>% inner_join(df2, by = c('Country' = 'Number')) %>%
rename(N = Country, Country = Country.y) %>% select(-1)
Obs Country
1 Stuff1 C1
2 Stuff2 C3
3 Stuff3 C4
4 Stuff4 C2
library(tidyverse)
df1 <- data.frame(list(Country=c("1","3","4","2"),
Obs=c("Stuff1","Stuff2","Stuff3","Stuff4")))
df2 <- data.frame(list(Number=c("1","2","3","4"),
Country=c("C1","C2","C3","C4")))
df1 %>% rename(Number = Country) %>%
left_join(df2, by = "Number")
Number Obs Country
1 1 Stuff1 C1
2 3 Stuff2 C3
3 4 Stuff3 C4
4 2 Stuff4 C2