gpt4 book ai didi

r - 针对 dplyr 管道中的特定列

转载 作者:行者123 更新时间:2023-12-02 03:38:24 26 4
gpt4 key购买 nike

我非常喜欢在 R %>% 中使用 magrittr 管道,并尝试尽可能频繁/高效地使用它们。我经常需要以管道链中的特定列为目标,例如更改列类型。这导致我不得不打破链条/我的工作流程,因为我需要只针对一个特定的列而不是我的整个数据框。

考虑以下示例:

library(tidyverse)
rm(list = ls())

a <- c(1:20)
b <- rep(c("a", "b"), 10)

df <- data_frame(a, b) %>%
rename(info = b) %>%
recode(x = df$info, "a" = "x") #I'd like to target only the df$info column here

这显然行不通,因为 dplyr 不希望我更改管道链中函数的 x = 参数。

library(tidyverse)
rm(list = ls())

a <- c(1:20)
b <- rep(c("a", "b"), 10)

df <- data_frame(a, b) %>%
rename(info = b)

df$info <- df$info %>% #this works as expected, but is not as elegant
recode("a" = "x")

这是我认为应该完成的方式,但我觉得它没有我希望的那样高效/优雅,特别是如果我计划在重新编码后将更多功能链接在一起。

有没有方便的方法解决这个问题,以便我可以告诉我的管道链中的命令仅针对特定列?

最佳答案

我们需要把它放在 mutate

data_frame(a, b) %>% 
rename(info = b) %>%
mutate(info = recode(info, a = "x"))
# A tibble: 20 x 2
# a info
# <int> <chr>
# 1 1 x
# 2 2 b
# 3 3 x
# 4 4 b
# 5 5 x
# 6 6 b
# 7 7 x
# 8 8 b
# 9 9 x
#10 10 b
#11 11 x
#12 12 b
#13 13 x
#14 14 b
#15 15 x
#16 16 b
#17 17 x
#18 18 b
#19 19 x
#20 20 b

关于r - 针对 dplyr 管道中的特定列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49427759/

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