R语言 冗余元素,以简化以下代码操作

kulphzqa  于 2023-02-06  发布在  其他
关注(0)|答案(1)|浏览(132)

我尝试使用dplyr库合并到不同的电子表格,并进行以下操作。

db0 <- t0 %>% 
  mutate(GROUP = ifelse(GROUP == 'CONTROLLO', 'CONTROL','TRAINING')) %>% 
  mutate(GROUP = factor(GROUP, levels = c('CONTROL' ,"TRAINING"))) %>% 
  pivot_longer(c(ADAS_CogT0:SVF_T0), names_to = 'tests0', values_to = 'score0') %>% 
  arrange(tests0) %>% 
  pivot_longer(c(ADAS_CogT7:SVF_T7), names_to = 'tests7', values_to = 'score7') %>% 
  arrange(tests7) %>% 
  mutate(
    Gender = factor(if_else(
      Gender == "1", "M", "F"
    ), levels = c("M", "F"))
  ) %>% mutate(tests0 = factor(tests0, 
                               levels = c('ADAS_CogT0', 
                               'PVF_T0', 'ROCF_CT0', 'ROCF_IT0', 
                               'ROCF_RT0', 'SVF_T0'))) %>% 
  mutate(tests7 = factor(tests7, 
                         levels = c('ADAS_CogT7', 
                                    'PVF_T7', 'ROCF_CT7', 'ROCF_IT7', 
                                    'ROCF_RT7', 'SVF_T7')))

在你个人看来,这段代码中有没有什么步骤可以简化?有没有多余的地方可以删除。无论如何,我在这里报告的是已经合并的数据集
这里两个不同电子表格的数据已经合并。如果你愿意,你可以用现在的数据来计算。

qhhrdooz

qhhrdooz1#

根据显示的代码,当我们顺序执行多个pivot_longer时,行将被展开。如果我们想一次对每个键/值对在一个步骤中完成这一操作,可以选择to_long

library(dplyr)
library(tibble)
library(sjmisc)
library(forcats)
out <- db %>% 
  mutate(GROUP = fct_recode(GROUP, CONTROL = "CONTROLLO")) %>%
  to_long(keys  = c("tests0", "tests7"),
          values =c("score0", "score7"),
          grep("T0$", names(.), value = TRUE), 
          grep("T7$", names(.), value = TRUE)) %>%
  as_tibble %>%
  mutate(Gender = factor(Gender, levels = c(1, 0), labels = c("M", "F")),
         across(c(tests0, tests7), factor))
  • 输出
> out
# A tibble: 600 × 9
      ID GROUP    Gender   Age Education tests0     score0 tests7     score7
   <dbl> <fct>    <fct>  <dbl>     <dbl> <fct>       <dbl> <fct>       <dbl>
 1     1 TRAINING M         74        18 ADAS_CogT0  14.7  ADAS_CogT7  16   
 2     2 TRAINING F         76         4 ADAS_CogT0  15.3  ADAS_CogT7   9.32
 3     3 TRAINING M         81         8 ADAS_CogT0  17.3  ADAS_CogT7  21.3 
 4     4 TRAINING F         74         5 ADAS_CogT0  19    ADAS_CogT7  17   
 5     5 TRAINING M         69         8 ADAS_CogT0   7.66 ADAS_CogT7   8.32
 6     6 TRAINING F         72        11 ADAS_CogT0  12.6  ADAS_CogT7  11   
 7     7 TRAINING F         75         5 ADAS_CogT0  18.7  ADAS_CogT7  15.0 
 8     8 TRAINING M         83         5 ADAS_CogT0  15.0  ADAS_CogT7  11.0 
 9     9 TRAINING F         78         4 ADAS_CogT0  18.0  ADAS_CogT7  17   
10    10 TRAINING F         72         8 ADAS_CogT0  17.3  ADAS_CogT7  18.3 
# … with 590 more rows

相关问题