有条件地将因子值从一个数据帧应用到另一个数据帧

时间:2017-02-13 21:56:15

标签: r

我有以下两个数据框:

letters <- LETTERS[seq(from = 1, to = 5)]
values <- rnorm(5, mean = 50)
df1 <- data.frame(letters, values)

category <- sample(LETTERS[1:5], 20, replace = TRUE)
numbers <- rnorm(20, mean = 100)
df2 <- data.frame(category, numbers)

我想在df2中创建一个新列,其中包含df2$numbers中的值,并根据匹配的字母减去df1$values中的值。

换句话说,如果&#34; C&#34;在df1中,我想从df2$numbers中的每一行减去49.2,其中df$category等于&#34; C&#34;。希望有道理。谢谢您的帮助!

1 个答案:

答案 0 :(得分:1)

使用dplyr

df <- full_join(df1, df2, by = c('letters' = 'category')) %>% 
    mutate(diff = numbers - values)