根据另一列具有输入数据框的值替换一列的值

威廉

使用此base::replace功能,我想z基于的值更改列一些值y

library(tidyverse)

(df <- tibble(y = 10:13, z = 20:23))
#> # A tibble: 4 x 2
#>       y     z
#>   <int> <int>
#> 1    10    20
#> 2    11    21
#> 3    12    22
#> 4    13    23

我有data.frame val,其中列a将用作条件的值,而列b将是替换值。

(val <- tibble(a = c(10, 12), b = c(100, 200)))
#> # A tibble: 2 x 2
#>       a     b
#>   <dbl> <dbl>
#> 1    10   100
#> 2    12   200

使用以下方法可以得到期望的结果,但是只有当其中所有val都在内部时,它才有效df

df %>% mutate(z = replace(z, y %in% val$a, val$b))
#> # A tibble: 4 x 2
#>       y     z
#>   <int> <dbl>
#> 1    10   100
#> 2    11    21
#> 3    12   200
#> 4    13    23

例如,如果我更新val为具有不在中的df,则:

(val <- tibble(a = c(1, 10, 12), b = c(1, 100, 200)))
#> # A tibble: 3 x 2
#>       a     b
#>   <dbl> <dbl>
#> 1     1     1
#> 2    10   100
#> 3    12   200

然后我再次运行代码...

df %>% mutate(z = replace(z, y %in% val$a, val$b))
#> Warning in x[list] <- values: number of items to replace is not a multiple of
#> replacement length
#> # A tibble: 4 x 2
#>       y     z
#>   <int> <dbl>
#> 1    10     1
#> 2    11    21
#> 3    12   100
#> 4    13    23

有错误...我该如何解决?

reprex软件包(v1.0.0)创建于2021-02-19

阿克伦

我们不需要任何内容​​,map因为'a','b'和'df'的行数具有相同的长度。因此,==可以与进行元素比较取而代之的是replace,使用ifelse/case_whenetc可能更好,因为replace values它的长度应与list条件TRUE元素的长度相同

library(dpyr)
df %>%
    mutate(z = case_when(a == y ~ as.integer(b), TRUE ~ z))

-输出

# A tibble: 3 x 2
#      y     z
#  <int> <int>
#1    10   100
#2    11   200
#3    12    22

或使用 base R

df$z <- with(df, ifelse(a == y, b, z))

在OP的代码中,length我们执行操作的时间有所不同

 replace(x = z, y == .x, values = .y)

其中“ z”将是整列长度.x.y将是每一行元素

更新

根据更新的数据,我们可以加入然后使用 coalesce

df %>% 
    left_join(val, by = c('y' = 'a')) %>%
    transmute(y, z = coalesce(b, z))
# A tibble: 4 x 2
#      y     z
#  <dbl> <dbl>
#1    10   100
#2    11    21
#3    12   200
#4    13    23

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据另一列具有输入数据框的值替换一列的值

来自分类Dev

应用特定功能根据数据框中另一列的条件替换列的值

来自分类Dev

根据另一列替换数据框列中的值

来自分类Dev

根据另一列替换数据框列中的值

来自分类Dev

应用特定功能根据数据框中另一列的条件替换列的值

来自分类Dev

如何根据没有循环的另一列替换列(数据框)中组的所有相同值?

来自分类Dev

根据R中的另一数据框替换一列中的值

来自分类Dev

根据数据框中另一列的唯一值查找一列的所有组合

来自分类Dev

如何根据同一数据框中另一列的值替换数据框中的值?

来自分类Dev

Spark数据框:根据另一列的值提取一列

来自分类Dev

根据另一列更新具有不同值的同一列

来自分类Dev

在pyspark数据框中添加具有另一列最大值的新列

来自分类Dev

根据数据框中另一列的值汇总和计算一列的唯一值

来自分类Dev

根据另一列的值根据条件添加具有值的新列

来自分类Dev

在具有相同ID pyspark数据框的另一列中显示不同的值

来自分类Dev

根据条件将一列中的值替换为另一列中的值

来自分类Dev

根据另一列中的共识值替换一列中的NA值

来自分类Dev

重新映射数据框中的值,其中键是一列,要替换的值是另一列

来自分类Dev

根据另一列中的值将值添加到熊猫数据框的一列中

来自分类Dev

根据另一列中的值将值添加到熊猫数据框的一列中

来自分类Dev

如何根据来自另一个表的检查替换熊猫数据框中的一列中的值

来自分类Dev

根据另一列中的相同值组合熊猫数据框列中的文本值

来自分类Dev

根据条件在数据框列中更改值,在另一列中更改值

来自分类Dev

如何将一列值替换为具有不同行数的另一列值?

来自分类Dev

根据另一列中的值对pandas数据框中的列进行归一化

来自分类Dev

根据另一列中的值对pandas数据框中的列进行归一化

来自分类Dev

根据熊猫数据框中另一列的最后一个值填充列

来自分类Dev

根据另一列更改一列的值

来自分类Dev

根据另一列的值添加一列

Related 相关文章

  1. 1

    根据另一列具有输入数据框的值替换一列的值

  2. 2

    应用特定功能根据数据框中另一列的条件替换列的值

  3. 3

    根据另一列替换数据框列中的值

  4. 4

    根据另一列替换数据框列中的值

  5. 5

    应用特定功能根据数据框中另一列的条件替换列的值

  6. 6

    如何根据没有循环的另一列替换列(数据框)中组的所有相同值?

  7. 7

    根据R中的另一数据框替换一列中的值

  8. 8

    根据数据框中另一列的唯一值查找一列的所有组合

  9. 9

    如何根据同一数据框中另一列的值替换数据框中的值?

  10. 10

    Spark数据框:根据另一列的值提取一列

  11. 11

    根据另一列更新具有不同值的同一列

  12. 12

    在pyspark数据框中添加具有另一列最大值的新列

  13. 13

    根据数据框中另一列的值汇总和计算一列的唯一值

  14. 14

    根据另一列的值根据条件添加具有值的新列

  15. 15

    在具有相同ID pyspark数据框的另一列中显示不同的值

  16. 16

    根据条件将一列中的值替换为另一列中的值

  17. 17

    根据另一列中的共识值替换一列中的NA值

  18. 18

    重新映射数据框中的值,其中键是一列,要替换的值是另一列

  19. 19

    根据另一列中的值将值添加到熊猫数据框的一列中

  20. 20

    根据另一列中的值将值添加到熊猫数据框的一列中

  21. 21

    如何根据来自另一个表的检查替换熊猫数据框中的一列中的值

  22. 22

    根据另一列中的相同值组合熊猫数据框列中的文本值

  23. 23

    根据条件在数据框列中更改值,在另一列中更改值

  24. 24

    如何将一列值替换为具有不同行数的另一列值?

  25. 25

    根据另一列中的值对pandas数据框中的列进行归一化

  26. 26

    根据另一列中的值对pandas数据框中的列进行归一化

  27. 27

    根据熊猫数据框中另一列的最后一个值填充列

  28. 28

    根据另一列更改一列的值

  29. 29

    根据另一列的值添加一列

热门标签

归档