从另一个数据帧r添加/减去数据帧行

亨森

我敢肯定这已经被问过了,但是我很难找到它。我需要将数据帧子集化为一行,并从相应的列中减去这些值。

实际上,我确实从数据框中的所有相关列中找到了单行的Subtract值,这提供了解决方案(请参阅下文),但是必须有一种更简单的方法,对吗?一个tidyverse解决方案将是最大的赞赏。

样品

这是一个示例数据帧:

df <- as_tibble(matrix(1:9, 3, 3))
## A tibble: 3 x 3
#     V1    V2    V3
#  <int> <int> <int>
#1     1     4     7
#2     2     5     8
#3     3     6     9

减去大小相等的数据帧是没有问题的。

df - df
#  V1 V2 V3
#1  0  0  0
#2  0  0  0
#3  0  0  0

问题

但是,当我将子集划分df为一行并尝试相减时,它无法减去不均匀的数据帧。我子集df

df[1, ]
## A tibble: 1 x 3
#     V1    V2    V3
#  <int> <int> <int>
#1     1     4     7

我想要的解决方案将从第一列的每个值中减去1,从第二列的每个值中减去4,从第三列的每个值中减去7,这样得出的结果是:

## A tibble: 3 x 3
#     V1    V2    V3
#  <int> <int> <int>
#1     0     0     0
#2     1     1     1
#3     2     2     2

尝试此操作将导致错误:

df - df[1, ]
#Error in Ops.data.frame(df, df[1, ]) : 
#  ‘-’ only defined for equally-sized data frames

在上面的链接中,我找到了此解决方案,该解决方案有效:

as_tibble(Map(`-`, df, df[1, ]))
## A tibble: 3 x 3
#     V1    V2    V3
#  <int> <int> <int>
#1     0     0     0
#2     1     1     1
#3     2     2     2

但是,这种解决方案似乎真的很复杂,并且不容易集成到一系列管道中。

有人有什么想法吗?

阿克伦

我们可以复制col数据集索引的行基这使两个数据集具有相同的长度/维度

df - unlist(df[1,])[col(df)]
#   V1 V2 V3
#1  0  0  0
#2  1  1  1
#3  2  2  2

如果我们需要tidyverse选项,map2可以使用

library(purrr)
library(dplyr)
map2_df(df, df[1, ], `-`)
# A tibble: 3 x 3
#     V1    V2    V3
#  <int> <int> <int>
#1     0     0     0
#2     1     1     1
#3     2     2     2

或另一个选择是 uncount

df - uncount(df[1, ], nrow(df))

或使用管道

df %>% 
  slice(1) %>% 
  uncount(nrow(df)) %>%
  {df - .}
#  V1 V2 V3
#1  0  0  0
#2  1  1  1
#3  2  2  2

或搭配 mutate_all

df %>%
    mutate_all(list(~ . - first(.)))
# A tibble: 3 x 3
#     V1    V2    V3
#  <int> <int> <int>
#1     0     0     0
#2     1     1     1
#3     2     2     2

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从另一个数据帧中减去一个数据帧中的所有行?

来自分类Dev

如何从另一个减去一个数据帧

来自分类Dev

在另一个数据帧中计算一行熊猫数据帧

来自分类Dev

在R中将数据帧归类为R中的另一个数据帧

来自分类Dev

在另一个数据帧中插入数据帧到行的每个组

来自分类Dev

从与另一个数据帧重叠的数据帧中删除行

来自分类Dev

使用另一个数据帧查找数据帧的对应行值

来自分类Dev

如何提取数据帧的每一行并将解析的字符串从另一个数据帧添加到R中第一个数据帧的列

来自分类Dev

根据R中另一个数据帧中的行为数据帧中的行设置子集

来自分类Dev

根据另一个数据帧在R数据帧中创建变量

来自分类Dev

R-具有来自另一个数据帧的序列的数据帧

来自分类Dev

如何从R中的另一个数据帧中提取数据帧

来自分类Dev

检查一个数据帧中的行是否在另一个数据帧中

来自分类Dev

根据R中的两个匹配条件,将值从一个数据帧添加到另一个数据帧

来自分类Dev

Pyspark:基于一个列值从另一个数据帧中减去一个数据帧

来自分类Dev

R:用另一个数据帧更新一个数据帧

来自分类Dev

查找一个数据帧中的一行出现在R中的另一个数据帧中的时间

来自分类Dev

将行从一个数据帧添加到另一个

来自分类Dev

如果匹配另一个数据帧的 ID,则添加来自 n 个数据帧的值

来自分类常见问题

如何从另一个重复的数据帧更新一个数据帧

来自分类Dev

如何从另一个重复的数据帧更新一个数据帧

来自分类Dev

一个条件为另一个数据帧的数据帧的R-子集

来自分类Dev

用R中的另一个数据帧完成一个带有变量的数据帧

来自分类Dev

用另一个不同大小的 Pandas 数据帧减去 Pandas 数据帧

来自分类Dev

删除行并根据另一个对一个数据帧进行排序

来自分类Dev

更新 Spark 数据帧以从另一个数据帧填充数据

来自分类Dev

将新列从另一个数据帧添加到长数据帧?

来自分类Dev

如何根据键值将转换为数组的数据帧添加为另一个数据帧的元素

来自分类Dev

用基于索引的另一个数据帧中的行覆盖熊猫数据帧中的某些行

Related 相关文章

  1. 1

    如何从另一个数据帧中减去一个数据帧中的所有行?

  2. 2

    如何从另一个减去一个数据帧

  3. 3

    在另一个数据帧中计算一行熊猫数据帧

  4. 4

    在R中将数据帧归类为R中的另一个数据帧

  5. 5

    在另一个数据帧中插入数据帧到行的每个组

  6. 6

    从与另一个数据帧重叠的数据帧中删除行

  7. 7

    使用另一个数据帧查找数据帧的对应行值

  8. 8

    如何提取数据帧的每一行并将解析的字符串从另一个数据帧添加到R中第一个数据帧的列

  9. 9

    根据R中另一个数据帧中的行为数据帧中的行设置子集

  10. 10

    根据另一个数据帧在R数据帧中创建变量

  11. 11

    R-具有来自另一个数据帧的序列的数据帧

  12. 12

    如何从R中的另一个数据帧中提取数据帧

  13. 13

    检查一个数据帧中的行是否在另一个数据帧中

  14. 14

    根据R中的两个匹配条件,将值从一个数据帧添加到另一个数据帧

  15. 15

    Pyspark:基于一个列值从另一个数据帧中减去一个数据帧

  16. 16

    R:用另一个数据帧更新一个数据帧

  17. 17

    查找一个数据帧中的一行出现在R中的另一个数据帧中的时间

  18. 18

    将行从一个数据帧添加到另一个

  19. 19

    如果匹配另一个数据帧的 ID,则添加来自 n 个数据帧的值

  20. 20

    如何从另一个重复的数据帧更新一个数据帧

  21. 21

    如何从另一个重复的数据帧更新一个数据帧

  22. 22

    一个条件为另一个数据帧的数据帧的R-子集

  23. 23

    用R中的另一个数据帧完成一个带有变量的数据帧

  24. 24

    用另一个不同大小的 Pandas 数据帧减去 Pandas 数据帧

  25. 25

    删除行并根据另一个对一个数据帧进行排序

  26. 26

    更新 Spark 数据帧以从另一个数据帧填充数据

  27. 27

    将新列从另一个数据帧添加到长数据帧?

  28. 28

    如何根据键值将转换为数组的数据帧添加为另一个数据帧的元素

  29. 29

    用基于索引的另一个数据帧中的行覆盖熊猫数据帧中的某些行

热门标签

归档