R 在df中自动变异多个列
我想从列列表中自动生成数据帧中的交互。 我举了一个例子R 在df中自动变异多个列,r,dplyr,R,Dplyr,我想从列列表中自动生成数据帧中的交互。 我举了一个例子 library(tidyverse) library(nycflights13) df<- nycflights13::weather interactions <- c("hour","temp","dewp","humid","wind_dir","wind_speed") df<- df %>
library(tidyverse)
library(nycflights13)
df<- nycflights13::weather
interactions <- c("hour","temp","dewp","humid","wind_dir","wind_speed")
df<- df %>% mutate (hour_temp= hour*temp, hour_dewp= hour*dewp)
库(tidyverse)
图书馆(nycflights13)
df我们可以使用combn
获得“交互”中的所有组合,每次取2,在combn
中指定FUN
以选择这些列,转换产品(*
),并将它们与原始数据集绑定
library(dplyr)
library(purrr)
library(stringr)
out <- combn(interactions, 2, function(x) df %>%
dplyr::select(x) %>%
transmute(!! str_c(x, collapse="_"):= reduce(., `*`)),
simplify = FALSE) %>%
bind_cols %>%
bind_cols(df, .)
或使用base R
m1 <- combn(interactions, 2)
df[paste(m1[1,], m1[2, ], sep="_")] <- lapply(asplit(m1, 2),
function(x) do.call(`*`, df[x]))
m1谢谢。这个例子很好,但是当尝试在另一段代码中使用它时,我在select(,x)中得到了错误:未使用的参数(x)
@Stat.Enthus您使用的是select
来自dplyr
还是来自其他包。请尝试dplyr::选择(x)
,以防它是伪装染料,谢谢!这是一个掩蔽问题。再次感谢。
m1 <- combn(interactions, 2)
df[paste(m1[1,], m1[2, ], sep="_")] <- lapply(asplit(m1, 2),
function(x) do.call(`*`, df[x]))