将数据框中的行列组合分配给变量

时间:2019-12-17 19:25:33

标签: r dplyr

我经常遇到以下问题。假设我从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中的变量?

1 个答案:

答案 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