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

标签 r dataframe

我有两个数据表:

一个

animal number
dog    11
cat    7
pig    5

B

animal number
dog    1
cat    2
pig    2
pig    3
cat    4
dog    2

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

-10
-5
-3
-2
-3
-9

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

最佳答案

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

B$number - A$number[match(B$animal, A$animal)]
# [1] -10  -5  -3  -2  -3  -9

如果您想将此附加到 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

关于r - 根据一秒的匹配值从一列中减去?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39001507/

相关文章:

r - 我应该如何创建一个 "clear"按钮来消除 R Shiny 的行?

python - 如何使用 iterrows 或 itertuples 有效地迭代以从旧数据帧创建新数据帧

python - 将 Pandas 时间序列数据集合并到数值最近的索引、全外连接、聚合列到最大值

r - 在 geom_smooth 中使用 `nlsfit` 添加指数线来绘制

r - ggplot2 热图 : how to preserve the label order?

r - 如何使用 "["函数选择矩阵的行/列

dataframe - 替换 Julia 中多种数据类型数组的子字符串

r - 如何合并 R 中的两列?

r - ggplot2 - 为数据框的每一列创建一个条形图

r - 检查字符串是否包含 R 中的所有空格