使用R中的大数据帧重新编码来查找/替换

时间:2015-10-22 03:23:41

标签: r replace recode

我希望执行"查找/替换"使用来自另一个数据框的字符在大数据框架中的因子。

用一个简单的例子来解释,我有以下数据框(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,但它只替换为矢量。

3 个答案:

答案 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