2017-02-13 72 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

相關問題