我是 dplyr 的新手,我在 (i) 理解它的语法和 (ii) 将其旧版本代码转换为我可以在其最新版本 (dplyr 1.0.2) 中使用的代码方面遇到了困难。特别是,我对以下两行代码感到困惑:
mutate_each(funs(replace(.,.=="NOT ANSWERED",NA))) %>%
mutate_each(funs(ordered(.,c("NOT AT ALL","ONCE A WEEK", "2-4 TIMES PER WEEK/HALF THE TIME", "5 OR MORE TIMES PER WEEK/ALMOST ALWAYS"))))
我认为第一行代码应该用 NA 替换所有“未回答”。
你认为下面的变换合适吗?
mutate(across(everything(),~replace(., .== "NOT ANSWERED", NA)))
但是,我不明白第二行代码是关于什么的。我相信这是关于创建某种有序变量,其中“完全没有”、“每周一次”、“每周 2-4 次/一半时间”和“每周 5 次或更多次/几乎总是”作为级别.
您对这一行的作用以及如何使用 mutate(across()) 将其转换为新语法有什么建议吗?
一些上下文
我正在尝试遵循有关如何使用 Bootnet R 包的教程。以下文字来自教程第一部分
要下载数据集,请访问: https ://datashare.nida.nih.gov/study/nida-ctn-0015并单击“CTN-0015 数据文件”。相关数据文件称为“qs.csv”,可以使用默认的 read.csv 函数将其加载到 R 中:
FullData <- read.csv("qs.csv", stringsAsFactors = FALSE)
这会以长格式加载数据,其中包含带有主题 ID 的列、带有管理项目名称的列以及包含项目响应的第三列。对于网络分析,我们需要数据是宽格式的。此外,我们需要指定响应“NOT ANSWERED”表示缺少响应,而其他响应是有序的。最后,我们需要在 PTSD 症状频率评分的基线测量中提取相关数据集。为此,我们可以使用 dplyr 和 tidyr R 包,如下所示:
# Load packages: library("dplyr") library("tidyr") # Frequency at baseline: Data <- FullData %>% filter(EPOCH == "BASELINE",grepl("^PSSR\\d+A$",QSTESTCD)) %>% select(USUBJID,QSTEST,QSORRES) %>% spread(QSTEST, QSORRES) %>% select(-USUBJID) % mutate_each(funs(replace(.,.=="NOT ANSWERED",NA))) %>% mutate_each(funs(ordered(.,c("NOT AT ALL","ONCE A WEEK", "2-4 TIMES PER WEEK/HALF THE TIME", "5 OR MORE TIMES PER WEEK/ALMOST ALWAYS")))) names(Data) <- seq_len(ncol(Data))
本教程的第二部分继续进行。