我想把NA填到下一排。这是数据集。
结构(列表)(时间戳=结构(c(1L、2L、3L、4L、5L、6L、7L、8L、9L、10L、11L、1L、2L、3L、4L、5L、6L、7L、8L、9L、10L、11L)。Label=c(“2019-07-07 00:00:00”、“2019-07-07 00:00:01”、“2019-07-07 00:00:02”、“2019-07-07 00:00:03”、“2019-07-07 00:00:05”、“2019-07-07 00:00:06”、“2019-07-07 00:00:07”、“2019-07-07 00:00:00:08”、“2019-07-07-07 00:00:00:09”、“2019-07-07-07 00:00:00:00:10”)、class=“系数”),来源=结构(c(钠,钠,钠,1L,钠,钠,钠,1L,钠,钠,钠,钠,钠,2L,钠,钠,钠,钠,钠,钠,2L,钠,钠,钠。Label=c(“用户A”、“用户B”)、class=“系数”)、value=c(NA、NA、NA、1L、NA、NA、NA、NA、NA、1L、NA、1L、NA、2L、NA、NA、NA、NA、3L、NA))、class=“data.frame”,第行。名称=c(NA,-22L))
timestamp source value
1 2019-07-07 00:00:00 <NA> NA
2 2019-07-07 00:00:01 <NA> NA
3 2019-07-07 00:00:02 <NA> NA
4 2019-07-07 00:00:03 USER_A 1
5 2019-07-07 00:00:04 <NA> NA
6 2019-07-07 00:00:05 <NA> NA
7 2019-07-07 00:00:06 USER_A 1
8 2019-07-07 00:00:07 <NA> NA
9 2019-07-07 00:00:08 <NA> NA
10 2019-07-07 00:00:09 <NA> NA
11 2019-07-07 00:00:10 <NA> NA
12 2019-07-07 00:00:00 <NA> NA
13 2019-07-07 00:00:01 USER_B 1
14 2019-07-07 00:00:02 <NA> NA
15 2019-07-07 00:00:03 USER_B 1
16 2019-07-07 00:00:04 <NA> NA
17 2019-07-07 00:00:05 <NA> NA
18 2019-07-07 00:00:06 USER_B 2
19 2019-07-07 00:00:07 <NA> NA
20 2019-07-07 00:00:08 <NA> NA
21 2019-07-07 00:00:09 USER_B 3
22 2019-07-07 00:00:10 <NA> NA
该表是时间和源之间的各种循环。每个源(A和B)都有固定的行(在本例中为00:00:00到00:00:10)。
这是预期结果表。
timestamp source value
1 2019-07-07 00:00:00 <NA> NA
2 2019-07-07 00:00:01 <NA> NA
3 2019-07-07 00:00:02 <NA> NA
4 2019-07-07 00:00:03 USER_A 1
5 2019-07-07 00:00:04 USER_A 1
6 2019-07-07 00:00:05 USER_A 1
7 2019-07-07 00:00:06 USER_A 1
8 2019-07-07 00:00:07 <NA> NA
9 2019-07-07 00:00:08 <NA> NA
10 2019-07-07 00:00:09 <NA> NA
11 2019-07-07 00:00:10 <NA> NA
12 2019-07-07 00:00:00 <NA> NA
13 2019-07-07 00:00:01 USER_B 1
14 2019-07-07 00:00:02 USER_B 1
15 2019-07-07 00:00:03 USER_B 1
16 2019-07-07 00:00:04 USER_B 2
17 2019-07-07 00:00:05 USER_B 2
18 2019-07-07 00:00:06 USER_B 2
19 2019-07-07 00:00:07 USER_B 3
20 2019-07-07 00:00:08 USER_B 3
21 2019-07-07 00:00:09 USER_B 3
22 2019-07-07 00:00:10 <NA> NA
根据USER_A,5行和6行的值和源由7行的值和源替换。USER_B行也会基于下一行以相同的方式替换。
我如何在R中进行此过程?
这里有一种使用dplyr
的方法,因为每个源代码都有固定数量的行。我们首先为每个
n
行创建一个组,并添加一个新的列group2
,该列在组中非NA值的min
和max
索引之间只有1个。然后,我们按group2
对缺失值进行分组,并按组按以前的非缺失值对缺失值进行填充。
n <- 11
library(dplyr)
df %>%
group_by(group1 = gl(n()/n, n)) %>%
mutate(group2 = 0,
group2 = replace(group2, min(which(!is.na(source))) :
max(which(!is.na(source))), 1)) %>%
group_by(group2) %>%
tidyr::fill(source, value) %>%
ungroup() %>%
select(-group1, -group2)
# A tibble: 22 x 3
# timestamp source value
# <fct> <fct> <int>
# 1 2019-07-07 00:00:00 NA NA
# 2 2019-07-07 00:00:01 NA NA
# 3 2019-07-07 00:00:02 NA NA
# 4 2019-07-07 00:00:03 USER_A 1
# 5 2019-07-07 00:00:04 USER_A 1
# 6 2019-07-07 00:00:05 USER_A 1
# 7 2019-07-07 00:00:06 USER_A 1
# 8 2019-07-07 00:00:07 NA NA
# 9 2019-07-07 00:00:08 NA NA
#10 2019-07-07 00:00:09 NA NA
# … with 12 more rows
本文向大家介绍如何将R数据帧中的字符串转换为NA?,包括了如何将R数据帧中的字符串转换为NA?的使用技巧和注意事项,需要的朋友参考一下 我们经常会在数据收集过程中发现错误,这些错误可能会导致研究结果不正确。当错误地收集数据时,将使分析师的工作变得困难。显示数据有错误的一种情况是获取字符串代替数字值。因此,我们需要将这些字符串转换为R中的NA,以便我们可以进行预期的分析。 示例 请看以下数据帧- 将
本文向大家介绍如何在R数据帧中将空值转换为NA?,包括了如何在R数据帧中将空值转换为NA?的使用技巧和注意事项,需要的朋友参考一下 当我们的数据包含空值时,很难执行分析,我们可能会将这些空值转换为NA,以便我们了解不可用的值的数量。这可以通过使用单个方括号来完成。 示例 请看以下具有一些空值的数据框- 将空值转换为NA-
本文向大家介绍如何将NA替换为R数据帧中选定列的值?,包括了如何将NA替换为R数据帧中选定列的值?的使用技巧和注意事项,需要的朋友参考一下 在数据分析中,在数据框中查找某些NA值非常普遍,但如果包含NA值的列对分析无用,则所有NA值都不会产生问题。我们可以将所有NA值替换为0或将其他有用的列替换为其他值。 示例 请看以下数据帧- 将NA的连续列更改为零- 将NA的非连续列更改为零-
我有一个像这样的数据框 由reprex包(v2.0.1)于2022-02-17创建 我想group_by col1,当count_col2 当count_col1 我希望我的数据看起来像这样 我不确定这是否可以通过变异(case_when…)来实现。到目前为止,我失败了
本文向大家介绍如何检查向量在R中是否包含NA值?,包括了如何检查向量在R中是否包含NA值?的使用技巧和注意事项,需要的朋友参考一下 R中的NA值表示“不可用”,表示缺少值。如果一个向量甚至只有一个NA值,那么对该向量的计算就会有些困难,因为在计算过程中我们要么必须删除该NA,要么替换它,或者忽略它。要执行任何这些操作,我们将必须对代码进行一些更改,因此,最好在执行任何操作之前检查向量是否包含NA。
本文向大家介绍R使用NA值读取和写入数据,包括了R使用NA值读取和写入数据的使用技巧和注意事项,需要的朋友参考一下 示例 使用read.*函数读取表格数据集时,R自动查找看起来像的缺失值"NA"。但是,缺失值并不总是由表示NA。有时,点(.),连字符(-)或字符值(例如:)empty表示值是NA。该函数的na.strings参数read.*可用于告诉R需要将哪些符号/字符视为NA值: 还可能表明需