有没有办法填充特定值之间的列的缺失值? [复制]

2023-11-30

假设我在 R 中创建一个数据框,如下所示:

df1 <- data.frame(time = 1:20, trial = c(NA, NA, NA, 1, NA, NA, NA, 1, NA, NA, NA, 2, NA, NA, NA, 2, NA, NA, NA, NA))

其输出:

   time trial
1     1    NA
2     2    NA
3     3    NA
4     4     1
5     5    NA
6     6    NA
7     7    NA
8     8     1
9     9    NA
10   10    NA
11   11    NA
12   12     2
13   13    NA
14   14    NA
15   15    NA
16   16    NA
17   17    NA
18   18     2
19   19    NA
20   20    NA

有没有办法让1之间的NA也为1,2之间的NA也为2,其余的NA也为0?本质上,我希望最终的数据框如下所示:

   time trial
1     1     0
2     2     0
3     3     0
4     4     1
5     5     1
6     6     1
7     7     1
8     8     1
9     9     0
10   10     0
11   11     0
12   12     2
13   13     2
14   14     2
15   15     2
16   16     2
17   17     2
18   18     2
19   19     0
20   20     0

这是使用 dplyr 和的潜在解决方案跑步包:

library(dplyr)
#install.packages("runner")
library(runner)

df1 <- data.frame(time = 1:26, trial = c(NA, NA, NA, 1, NA, NA, NA, 1, NA, NA, NA, 2, NA, NA, NA, 2, NA, NA, NA, NA, 3, NA, NA, NA, 3, NA))

# To fill between every non-NA 'run'
df1 %>%
  mutate(trial = runner::fill_run(trial, only_within = TRUE))
#>    time trial
#> 1     1    NA
#> 2     2    NA
#> 3     3    NA
#> 4     4     1
#> 5     5     1
#> 6     6     1
#> 7     7     1
#> 8     8     1
#> 9     9    NA
#> 10   10    NA
#> 11   11    NA
#> 12   12     2
#> 13   13     2
#> 14   14     2
#> 15   15     2
#> 16   16     2
#> 17   17    NA
#> 18   18    NA
#> 19   19    NA
#> 20   20    NA
#> 21   21     3
#> 22   22     3
#> 23   23     3
#> 24   24     3
#> 25   25     3
#> 26   26    NA

# To fill between 1's and 2's and leave everything else as is
df1 %>%
  mutate(tmp = runner::fill_run(trial, only_within = TRUE)) %>%
  transmute(time, trial = ifelse(tmp >= 3 & is.na(trial), NA, tmp))
#>    time trial
#> 1     1    NA
#> 2     2    NA
#> 3     3    NA
#> 4     4     1
#> 5     5     1
#> 6     6     1
#> 7     7     1
#> 8     8     1
#> 9     9    NA
#> 10   10    NA
#> 11   11    NA
#> 12   12     2
#> 13   13     2
#> 14   14     2
#> 15   15     2
#> 16   16     2
#> 17   17    NA
#> 18   18    NA
#> 19   19    NA
#> 20   20    NA
#> 21   21     3
#> 22   22    NA
#> 23   23    NA
#> 24   24    NA
#> 25   25     3
#> 26   26    NA

Created on 2022-07-07 by the reprex package (v2.0.1)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法填充特定值之间的列的缺失值? [复制] 的相关文章

  • ggplot2 的组合图(不在单个图中),使用 par() 或 layout() 函数? [复制]

    这个问题在这里已经有答案了 我一直在考虑使用 par 或 layout 函数来组合 ggplots 可以使用这些功能吗 假设我想绘制 ggplot 散点图和 ggplot 直方图 我想将这两个地块合并起来 而不是在一个地块中 是否适用 我在
  • Pandas DataFrame - 列 whos dtype=='category' 上的聚合导致性能下降

    我使用内存使用量较高的大数据帧 并且我读到 如果更改重复值列上的数据类型 我可以节省大量内存 我尝试了一下 确实内存使用量下降了 25 但随后我遇到了我无法理解的性能缓慢问题 我对 dtype 类别 列进行分组聚合 在更改 dtype 之前
  • 什么是 data.frame 可以做而 data.table 不能做的事情?

    我刚刚开始使用 R 并遇到了 data table 我发现它很棒 一个非常天真的问题 我可以忽略 data frame 来使用 data table 以避免两个包之间的语法混淆吗 来自数据表常见问题解答 http datatable r f
  • 哪种 LaTeX 包与 knit 一起使用以获得更多的表格控制?禁忌?

    我正在用 knitr 写一张更长的桌子xtable和tabular environment longtable 在 longtable 包中时print将它们纳入我的 Rnw file 问题是我对longtable环境控制不够 我有一些文本
  • 两个闪亮的操作按钮

    我正在编写一个闪亮的函数 其中包含两个操作按钮 这两个按钮是左右按钮 单击时可以帮助绘图移动 第一次单击时 这两个按钮都工作正常 当我重新单击它们时 就会出现问题 无论我单击哪个按钮 它都会在两个范围之间来回弹跳 我猜可能是 右 和 左 按
  • 使用 dplyr 按组计算加权平均值(并复制其他方法)

    我对语法感到困惑dplyr当尝试计算加权平均值时 我听从大卫的建议here https stackoverflow com a 27609266 1457380 语法非常透明 因此很有吸引力 但它似乎没有按我的预期工作 低于加权平均值是针对
  • Sweave 缓存包

    我正在尝试编写一份报告 我的问题是每次我编译 R 时都会加载我在报告中使用的包 如 ggplot2 MASS cubature 这是非常耗时的 有没有办法查包裹 I found 缓存编织但它不起作用 这是我在 sweave 文件中添加的块
  • 如何重试错误语句?

    如果某个语句出错 我如何简单地告诉 R 重试该语句几次 例如 我希望做类似的事情 tryCatch dbGetQuery Query database error function e if is locking error e If da
  • 如何在shell脚本中运行R代码?

    我有一个 R 文件 myfile R 我想使用 shell 脚本来运行它 我怎样才能做到这一点 我试过这个 bin bash Rscript myfile R 但它给了我这个错误 Rscript 找不到命令 我也尝试过这个 bin bash
  • 插值时间序列

    我有两组具有不同时间戳的数据 一组数据包含校准数据 另一组包含样本数据 校准的频率比样品少得多 我想做的是将校准数据 低频 插值到采样时间序列 高频 上 sam lt textConnection time value 01 00 52 2
  • 对 R/Sweave 进行编程以获得正确的 \Sexpr 输出

    我在为 Sweave 进行 R 编程时遇到了一些问题 rstats twitter 小组经常指出这里 所以我想我应该把这个问题向大家提出 我是一名分析师 而不是程序员 所以在我的第一篇文章中请放轻松 问题是 我正在使用 R 在 Sweave
  • 如何连接 R 列表中的多个 .wav 文件?

    我有一个 wav 文件列表my list library seewave library tuneR data tico audio lt tico freq lt 22050 breaks lt c 0 0 2 0 4 0 6 0 8 i
  • 将一个大的 xlsx 文件导入到 R 中?

    我想知道是否有人知道从 大 xlsx 文件 20Mb 导入数据的方法 我尝试使用 xlsx 和 XLConnect 库 不幸的是 两者都使用 rJava 我总是收到相同的错误 gt library XLConnect gt wb lt lo
  • 将英寸高度的字符向量转换为厘米?

    我得到一个字符向量 tibble H c 6 2 5 10 5 5 5 1 5 5 5 4 我想将其转换为厘米 请告知我该怎么做 有几种方法可以使用 1 阅读与fread粘贴到单个字符串后 library data table fread
  • 整理包中的字段说明

    我很抱歉 因为我知道这个答案可能出现在编写 R 包的手册中 但在我阅读和查看其他包的整理字段时 我无法 100 弄清楚该字段的用途 用简单的语言 我的是英语 来看 包的描述文件中的整理字段有什么作用 人们想在那里放什么 我认为这来自于某个时
  • 在R中提取其他两个字符串之间的字符串

    我试图找到一种简单的方法来提取出现在两个已知子字符串之间的未知子字符串 可以是任何内容 例如 我有一个字符串 a lt anything goes here STR1 GET ME STR2 anything goes here 我需要提取
  • 通过排列进行多组测试

    我有一个 df 其中包含与两个实验相关的两组值 value 1 和 value 2 一个实验包含两组 0 和 1 另一个实验包含三组 0 1 2 test group Value 1 Value 2 AA 0 15 1 11 2 AA 0
  • 在 R 中高效加载稀疏矩阵

    我在将数据有效加载到 R 中的稀疏矩阵格式时遇到问题 这是我当前策略的 不完整 示例 library Matrix a1 Matrix 0 5000 100000 sparse T for i in 1 5000 a1 i idxOfCol
  • 如何将带有几行代码的字符数组转换为 data.frame?

    我有以下数组 my list lt c Jan 01 Dec 31 00 00 24 00 Jan 01 Jun 30 12 00 18 00 Jul 06 Dec 31 09 00 19 00 导致以下结果的最短代码是什么 x1 x2 x
  • 当价格低于阈值时使用 pandas DataFrame 实施矢量化止损

    给出这个示例数据框 date close signal positions 2017 01 02 27 90 0 0 0 0 2017 01 03 27 76 0 0 0 0 2017 01 04 28 65 1 0 1 0 2017 01

随机推荐