我希望执行"查找/替换"使用来自另一个数据框的字符在大数据框架中的因子。
用一个简单的例子来解释,我有以下数据框(df):
ID1 ID2 value
1 A A 0.01
2 A D 0.02
3 B D 0.03
4 B C 0.04
5 C F 0.05
6 C D 0.06
7 D A 0.07
8 D C 0.08
并希望用名称替换每个字母,该名称来自以下数据框(id):
ID NAME
1 A ADAM
2 B BOB
3 C CARL
4 D DAVID
5 E EDWARD
6 F FRED
最终得到(new.df):
ID1 ID2 value
1 ADAM ADAM 0.01
2 ADAM DAVID 0.02
3 BOB DAVID 0.03
4 BOB CARL 0.04
5 CARL FRED 0.05
6 CARL DAVID 0.06
7 DAVID ADAM 0.07
8 DAVID CARL 0.08
我知道有很多简单的选项会涉及写出所有替换选项(即A =" ADAM"),但我需要替换1000个因素,所以这不是一个选项
我不确定从哪里开始!我使用this recode website尝试car::recode
,但它只替换为矢量。
答案 0 :(得分:0)
您可能想尝试
capturedImage.image = capturedImageRef
答案 1 :(得分:0)
执行此操作的一种效率低下的方法是重塑。
library(dplyr)
library(tidyr)
key = data_frame(
ID = c("A", "B", "C", "D", "F"),
name = c("Adam", "Bob", "Carl", "David", "Fred") )
data %>%
mutate(row_ID = 1:n()) %>%
gather(variable, ID, -value, -row_ID) %>%
left_join(key) %>%
select(-ID) %>%
spread(variable, name)
答案 2 :(得分:0)
我们可以使用dplyr
执行此操作(使用与@thelatemail相同的方法)。我们使用mutate_each
,选择列ID' ID' ID2'在第一个数据集(' df1')中,match
带有' ID'来自' df2'获取数字索引并使用它来替换为' NAME'来自' df2'。
library(dplyr)
df1 %>%
mutate_each(funs(df2$NAME[match(., df2$ID)]), ID1:ID2)
# ID1 ID2 value
#1 ADAM ADAM 0.01
#2 ADAM DAVID 0.02
#3 BOB DAVID 0.03
#4 BOB CARL 0.04
#5 CARL FRED 0.05
#6 CARL DAVID 0.06
#7 DAVID ADAM 0.07
#8 DAVID CARL 0.08