2017-02-13 73 views
0

我有以下两个数据帧:有条件施加因子值从一个数据帧到另一个

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值匹配的信件。换句话说,如果df1中“C”的值是49.2,我想从df2$numbers中的每一行中减去49.2,其中df$category等于“C”。希望这是有道理的。谢谢您的帮助!

+2

'$ DF2数= $ DF2数字 - DF1 $值[匹配(DF2 $类,DF1 $字母)]' –

+0

漂亮的工作,谢谢! – Michael

回答

1

随着dplyr

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

真棒,谢谢! – Michael

相关问题