Добавление значений из одного столбца в другой с пропущенными значениями во втором столбце с помощью R - PullRequest
0 голосов
/ 17 апреля 2019

Я хочу добавить только некоторые конкретные значения из столбца 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 ]

2 голосов
/ 17 апреля 2019

Давайте использовать 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 голос
/ 17 апреля 2019

Мы можем использовать merge от base R

merge(df1, df2[c("id", "z")])
1 голос
/ 17 апреля 2019

вы можете попробовать это

df_add <- df1
df_add$z = df2[df2$id %in% c(1, 3), ]$z
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...