我经常遇到以下问题。假设我从dplyr链生成以下汇总表:
dat = read.table(text = "treatment mean_pre sd_pre mean_post sd_post
DD 14.78429 20.65952 13.95886 18.86172
DR 10.50125 17.51840 21.33969 23.56563
RD 17.33781 19.19242 26.30031 26.10222
RR 24.44870 23.38217 26.74986 25.04986", header = T)
然后,我手动构造变量以供以后的代码使用,例如:
dd_mean_pre = 14.78429
dd_sd_pre = 13.95886
dd_mean_post = 13.95886
dd_sd_post = 18.86172
dr_mean_pre = 10.50125
依此类推,对于数据框中的所有单元格。有没有一种更快的方法可以动态地将此数据帧的行和列组合分配给R中的变量?
答案 0 :(得分:1)
也许我们可以将其转换为“长”格式,然后unite
library(dplyr)
library(tidyr)
out <- dat %>%
pivot_longer(cols = -treatment) %>%
mutate(treatment = tolower(treatment)) %>%
unite(trtname, treatment, name)
如果我们需要将其用作其他对象(不推荐)
library(tibble)
deframe(out) %>%
as.list %>%
list2env(.GlobalEnv)
在全局环境中创建对象
rr_mean_pre
#[1] 24.4487
dr_mean_post
#[1] 21.33969