gpt4 book ai didi

r - 当函数采用不同列的多个参数时使用 dplyr mutate_at

转载 作者:行者123 更新时间:2023-12-04 00:24:24 24 4
gpt4 key购买 nike

我有一个 data.frame具有大量名称遵循模式的列。如:

df <- data.frame(
x_1 = c(1, NA, 3),
x_2 = c(1, 2, 4),
y_1 = c(NA, 2, 1),
y_2 = c(5, 6, 7)
)

我要申请 mutate_at对每对列执行相同的操作。如:
df %>%
mutate(
x = ifelse(is.na(x_1), x_2, x_1),
y = ifelse(is.na(y_1), y_2, y_1)
)

有没有办法用 mutate_at 做到这一点?/ mutate_each ?

这个:
df %>%
mutate_each(vars(x_1, y_1), funs(ifelse(is.na(.), vars(x_2, y_2), .)))

我尝试过的各种变体都失败了。

问题类似于 Using functions of multiple columns in a dplyr mutate_at call ,但不同之处在于函数调用的第二个参数不是单个列,而是 vars 中每一列的不同列。

提前致谢。

最佳答案

我不知道你是否可以这样理解,但这里有一个不同的角度来看待这个问题。如果您发现自己拥有非常广泛的数据(例如,大量具有相似名称的列)并且您想对它们做一些事情,那么 tidy 可能会有所帮助数据(长于 stata 条款)与 tidyr::gather (请参阅此处的文档 http://tidyr.tidyverse.org/ )。

> df %>% gather()
key value
1 x_1 1
2 x_1 NA
3 x_1 3
4 x_2 1
5 x_2 2
6 x_2 4
7 y_1 NA
8 y_1 2
9 y_1 1
10 y_2 5
11 y_2 6
12 y_2 7

将数据转换为这种格式后,使用 group_by 组合和重新排列值会更容易。而不是尝试 mutate_at事物。例如,您可以使用 df %>% gather() %>% mutate(var = substr(key,1,1)) 获取第一个值并操纵 x s 和 y使用 group_by(var) 的方式不同.

关于r - 当函数采用不同列的多个参数时使用 dplyr mutate_at,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48470718/

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