【发布时间】:2018-04-06 13:50:05
【问题描述】:
我有一个问题,我可以使用 iris 数据集进行复制,其中许多组(名称中的前缀相同)具有两个不同后缀的变量。我想对所有这些组进行一个比例,但找不到一个 tidyverse 解决方案。我本来可以通过 mutate_at() 可能已经能够提供帮助。
在鸢尾花数据集中,您可以考虑为花瓣列我想生成长度/宽度的花瓣比例。同样,我想为 Sepal 执行此操作。我不想在mutate() 中手动执行此操作,因为我有很多变量组,而且这可能会随着时间而改变。
我确实有一个使用 base R 的解决方案(在下面的代码中),但我想知道是否有一个 tidyverse 解决方案可以实现相同的效果。
# libs ----
library(tidyverse)
# data ----
df <- iris
glimpse(df)
# set up column vectors ----
length_cols <- names(df) %>% str_subset("Length") %>% sort()
width_cols <- names(df) %>% str_subset("Width") %>% sort()
new_col_names <- names(df) %>% str_subset("Length") %>% str_replace(".Length", ".Ratio") %>% sort()
length_cols
width_cols
new_col_names
# make new cols ----
df[, new_col_names] <- df[, length_cols] / df[, width_cols]
df %>% head()
谢谢, 加雷斯
【问题讨论】: