根据一秒的匹配值从一列中减去?

Ama*_*shy 2 r dataframe

我有两个数据表:

一种

animal number
dog    11
cat    7
pig    5
Run Code Online (Sandbox Code Playgroud)

animal number
dog    1
cat    2
pig    2
pig    3
cat    4
dog    2
Run Code Online (Sandbox Code Playgroud)

我想根据匹配的动物从B 中的数字中减去A中的数字,以获得结果......

-10
-5
-3
-2
-3
-9
Run Code Online (Sandbox Code Playgroud)

我确信我可以在不必编写循环的情况下做到这一点,但不知道该怎么做。我已经做了很多搜索,但是我这样做并没有产生任何结果。(这apply是使用how 之类的东西吗?)

李哲源*_*李哲源 5

假设您的数据框是AB,使用match是一种可能性:

B$number - A$number[match(B$animal, A$animal)]
# [1] -10  -5  -3  -2  -3  -9
Run Code Online (Sandbox Code Playgroud)

如果您想将此附加到B,请使用

B$diff <- B$number - A$number[match(B$animal, A$animal)]

#  animal number diff
#1    dog      1  -10
#2    cat      2   -5
#3    pig      2   -3
#4    pig      3   -2
#5    cat      4   -3
#6    dog      2   -9
Run Code Online (Sandbox Code Playgroud)