gpt4 book ai didi

R+dplyr : conditionally swap the elements of two columns

转载 作者:行者123 更新时间:2023-12-05 03:37:03 25 4
gpt4 key购买 nike

考虑帖子末尾的数据框 df。我只是想在 x>y 时交换列 xy 的元素。

dataframe 中可能还有我不想触及的其他列。

从某种意义上说,我想按行对 xy 列进行排序。

library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union



df<-tibble(x=1:10, y=10:1, extra=LETTERS[1:10])


df
#> # A tibble: 10 × 3
#> # Rowwise:
#> x y extra
#> <int> <int> <chr>
#> 1 1 10 A
#> 2 2 9 B
#> 3 3 8 C
#> 4 4 7 D
#> 5 5 6 E
#> 6 6 5 F
#> 7 7 4 G
#> 8 8 3 H
#> 9 9 2 I
#> 10 10 1 J

reprex package 创建于 2021-10-06 (v2.0.1)

最佳答案

基础解决方案:

使用 which(df$x > df$y) 确定要更改的行号,然后使用 rev 交换这些值:

df[which(df$x > df$y), c("x", "y")] <- rev(df[which(df$x > df$y), c("x", "y")])
df
# x y extra
# <int> <int> <chr>
# 1 1 10 A
# 2 2 9 B
# 3 3 8 C
# 4 4 7 D
# 5 5 6 E
# 6 5 6 F
# 7 4 7 G
# 8 3 8 H
# 9 2 9 I
# 10 1 10 J

关于R+dplyr : conditionally swap the elements of two columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69461948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com