gpt4 book ai didi

r - 如何使新变量循环遍历数据框中的两个变量

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

我是 R 的新手,我想知道如何通过在数据框中循环两个变量来创建新变量。

我试图通过使用两个变量来改变数据帧。我使用 mutate 函数制作了一个代码,它只适用于几列。

df
n sd2_t sd1_t sd2neg_t sd1neg_t
1 20 22 10 11
2 25 26 20 22
3 30 33 15 12

df2<-df%>%
dplyr::mutate(sd2_s=sd2_t*n,
sd1_s=sd1_t*n,
sd2neg_s=sd2neg_t*n,
sd1neg_s=sd1neg_t*n)

Expected output
n sd2_t sd1_t sd2neg_t sd1neg_t sd2_s sd1_s sd2neg_s sd1neg_s
1 20 22 10 11 20 22 10 11
2 25 26 20 22 50 52 40 44
3 30 33 15 12 90 99 45 36

但是我有更多的列要改变,我想让代码更简单。我尝试查找“for 循环”和 lapply功能,但无法自行解决问题,需要帮助。

最佳答案

使用 dplyr ,我们可以使用 mutate_at选择以 "t" 结尾的列并将它们中的每一个与 n 相乘.

library(dplyr)
df %>%
mutate_at(vars(ends_with("t")), list(s = ~. * n))

# n sd2_t sd1_t sd2neg_t sd1neg_t sd2_t_s sd1_t_s sd2neg_t_s sd1neg_t_s
#1 1 20 22 10 11 20 22 10 11
#2 2 25 26 20 22 50 52 40 44
#3 3 30 33 15 12 90 99 45 36

并不是说它是必需的,因为您已经从 @thelatemail 获得了矢量化解决方案,但是因为您正在尝试使用 lapply一种方法是
df[sub("_t$", "_s", names(df[-1]))] <- lapply(df[-1], `*`, df$n)

关于r - 如何使新变量循环遍历数据框中的两个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56452764/

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