使用R将一列中的值添加到第二列中缺少值的另一列

时间:2019-04-17 12:40:11

标签: r dataframe

我只想将数据帧z中列df2的某些特定值添加到数据帧df1中,但仅用于id = 1和id =3。

我已经尝试过使用ifelse的解决方案,但是对于缺少的值,这种解决方案适用于第一个值,直到找到第一个缺少的缺口。

 df1$z <- ifelse((df1$id == df2$id), df2$z, 0)

数据示例:

 df1 <- read.table(text = "
 id  v    w   
 1   20   B
 3   30   T

     ", h = T)

 df2 <- read.table(text = "
 id  z   b  c  d  e  f  g  h  i  j
 1   100   z  w  e  r  y  w  u  y  q
 2   800   t  q  j  n  m  q  i  x  z
 3   700   f  e  q  b  a  i  e  p  w
 4   300   a  b  c  d  a  g  s  y  q"                 
                   , h = T)

预期结果:

  df1_add <- read.table(text = "
  id  v    w   z 
  1   20   B  100
  3   30   T  700
                ", h = T)

3 个答案:

答案 0 :(得分:2)

让我们使用left_join()软件包中的select()dplyr

library(dplyr)

df1_add <- df1 %>%
  left_join(df2 %>% select(id, z))

df1_add

  id  v w   z
1  1 20 B 100
2  3 30 T 700

答案 1 :(得分:1)

您可以尝试

df_add <- df1
df_add$z = df2[df2$id %in% c(1, 3), ]$z

答案 2 :(得分:1)

我们可以使用merge中的base R

merge(df1, df2[c("id", "z")])