- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有
> df
fu1_date fu1_n_symp fu5_date fu5_n_symp fu7_date fu7_n_symp
1 2012-03-05 1 2014-03-05 NA 2016-03-05 1
2 2013-08-09 1 2015-10-09 2 2017-11-09 NA
3 2019-05-05 1 2020-06-07 2 2021-07-09 2
df
表示一个非常大的数据框。在这个例子中,我记录了不同随访日期 fu_date
的症状数 n_symp
。
我的数据框中的每一行最多有 20 个跟进,fu1_
、fu2_
、...、fu20_
。我需要更正我的数据框,这样如果 n_symp
是 NA
那么相应的 fuX_date
应该从 as.Date() 转换
到 NA
。
您可以看到 第 1 行
在后续 5 (fu5_n_symp == NA
) 中有缺失值,但 FU1 或 FU7 没有。因此,第 1 行中的 fu5_date
应从 2014-03-05
转换为 NA
我正在寻找仅在 dplyr
中的解决方案。
预期输出
> df
fu1_date fu1_n_symp fu5_date fu5_n_symp fu7_date fu7_n_symp
1 2012-03-05 1 <NA> NA 2016-03-05 1
2 2013-08-09 1 2015-10-09 2 <NA> NA
3 2019-05-05 1 2020-06-07 2 2021-07-09 2
数据
df <- structure(list(fu1_date = structure(c(15404, 15926, 18021), class = "Date"),
fu1_n_symp = c(1L, 1L, 1L), fu5_date = structure(c(16134,
16717, 18420), class = "Date"), fu5_n_symp = c(NA, 2L, 2L
), fu7_date = structure(c(16865, 17479, 18817), class = "Date"),
fu7_n_symp = c(1L, NA, 2L)), class = "data.frame", row.names = c(NA, -3L))
最佳答案
使用pivot_longer()
,你可以指定".value"
到names_to
来堆叠date
和n_symp
成对。在这种情况下,必须提供 names_sep
或 names_pattern
之一来指定应如何拆分列名。然后,您可以轻松地用 NA
替换那些缺少 n_symp
的日期。最后,将长数据旋转得更宽以获得原始格式。
library(dplyr)
library(tidyr)
df %>%
mutate(id = 1:n()) %>%
pivot_longer(-id, names_to = c("fu", ".value"), names_sep = "(?<=\\d)_") %>%
mutate(date = replace(date, is.na(n_symp), NA)) %>%
pivot_wider(names_from = fu, values_from = c(date, n_symp),
names_glue = "{fu}_{.value}", names_vary = "slowest")
# # A tibble: 3 × 7
# id fu1_date fu1_n_symp fu5_date fu5_n_symp fu7_date fu7_n_symp
# <int> <date> <int> <date> <int> <date> <int>
# 1 1 2012-03-05 1 NA NA 2016-03-05 1
# 2 2 2013-08-09 1 2015-10-09 2 NA NA
# 3 3 2019-05-05 1 2020-06-07 2 2021-07-09 2
pivot_wider()
中的
names_vary
控制结果列名的组合顺序。
“最快”(默认)
fu1_date fu5_date fu7_date fu1_n_symp fu5_n_symp fu7_n_symp
“最慢”
fu1_date fu1_n_symp fu5_date fu5_n_symp fu7_date fu7_n_symp
关于r - 根据对应于特定日期的有效值将日期转换为 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74967827/
我可以为属性 contenteditable 选择什么值。 最佳答案 它可以包含: true 错误 继承 引用: The contentEditable DOM attribute, on getti
我在签署 Ionic android apk 时遇到此错误,我在 Kubuntu 17.04 上,使用 Ionic 3,安装了 java 8 我得到的错误: Enter Passphrase for
我是一名优秀的程序员,十分优秀!