- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我几乎肯定我可以使用 tidyr::complete
填写缺失的记录,但我无法通过使用 expand
使其正常工作或 nesting
.我还没有找到任何非常有帮助的例子。我用过 complete
对于单列,但从不多列。
我有一个数据集 group
, subgroup
, low_end
, 和 high_end
.高低为总是 5 分开。对于 group
的每一个可能的配对, subgroup
, low_end
+ high_end
组合,我需要在数据中至少有 1 条记录。并非 low_end
的所有可能组合和 high_end
将在数据中(在这个 reprex 20/25 中)。
df <- data.frame(
group = c(rep('A', 2), rep('B', 2), rep('C', 1)),
subgroup = c(1,2,2,2,1),
low_end = c(5, 10, 10, 15, 25),
high_end = c(10, 15, 15, 20, 30),
value = c(rep(99, 5))
)
group subgroup low_end high_end value
1 A 1 5 10 99
2 A 2 10 15 99
3 B 2 10 15 99
4 B 2 15 20 99
5 C 1 25 30 99
所需输出:
desired_result <- data.frame(
group = c(rep('A', 10), rep('B', 10), rep('C', 10)),
subgroup = c(rep(1, 5), rep(2, 5), rep(1, 5), rep(2, 5), rep(1, 5), rep(2, 5)),
low_end = c(rep(full_seq(x=c(5,25), 5), 6)),
high_end = c(rep(full_seq(x=c(10,30), 5), 6)),
value = c(99, rep(NA, 5), 99, rep(NA, 9), 99, 99, rep(NA, 6), 99, rep(NA, 5))
)
group subgroup low_end high_end value
1 A 1 5 10 99
2 A 1 10 15 NA
3 A 1 15 20 NA
4 A 1 20 25 NA
5 A 1 25 30 NA
6 A 2 5 10 NA
7 A 2 10 15 99
8 A 2 15 20 NA
9 A 2 20 25 NA
10 A 2 25 30 NA
11 B 1 5 10 NA
12 B 1 10 15 NA
13 B 1 15 20 NA
14 B 1 20 25 NA
15 B 1 25 30 NA
16 B 2 5 10 NA
17 B 2 10 15 99
18 B 2 15 20 99
19 B 2 20 25 NA
20 B 2 25 30 NA
21 C 1 5 10 NA
22 C 1 10 15 NA
23 C 1 15 20 NA
24 C 1 20 25 NA
25 C 1 25 30 99
26 C 2 5 10 NA
27 C 2 10 15 NA
28 C 2 15 20 NA
29 C 2 20 25 NA
30 C 2 25 30 NA
文档说使用
expand
包括数据中缺失的值,所以我认为它必须接近......
attempt <- df %>%
complete(expand(group, subgroup, low_end, high_end), fill= NA)
但同样,我显然在这里遗漏了一些重要的东西。
最佳答案
我们可以做 seq
内nesting
library(dplyr)
library(tidyr)
df %>%
complete(group, subgroup, nesting(low_end = seq(min(low_end),
max(low_end), by = 5),
high_end = seq(min(high_end), max(high_end), by = 5)))
-输出
# A tibble: 30 x 5
# group subgroup low_end high_end value
# <chr> <dbl> <dbl> <dbl> <dbl>
# 1 A 1 5 10 99
# 2 A 1 10 15 NA
# 3 A 1 15 20 NA
# 4 A 1 20 25 NA
# 5 A 1 25 30 NA
# 6 A 2 5 10 NA
# 7 A 2 10 15 99
# 8 A 2 15 20 NA
# 9 A 2 20 25 NA
#10 A 2 25 30 NA
# … with 20 more rows
关于r - 在多列上使用 tidyr::complete,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67376772/
我正在为网络元分析准备数据,但在输入列时遇到困难。 如果我有这个初始数据集: Study Trt y sd n 1 1 -1.22 3.70 54 1
这个问题在这里已经有了答案: How do I get a contingency table? (6 个回答) Faster ways to calculate frequencies and ca
我有一个看起来像这样的数据集 site % unite(D01, D01_1, D01_2, sep = "/", remove = TRUE) %>% unite(D02, D02_1, D
我有以下数据: > data data unique grouping value 1 1 a 15 2 2
我注意到了 tidyr(0.4.0)使用 spread 时对值列进行排序,如 tidyr(0.3.1)按照它们在 gather 之前的顺序返回值列. 可重现的示例 1: library(dplyr)
我正在学习 dplyr,来自 plyr,我想从 xtabs 的输出生成(每组)列(每交互)。 简短摘要:我得到 A B 1 NA NA 2 当我想要 A B 1 2 xta
我有一个 data.frame,其中一些单元格包含逗号分隔值的字符串: d % separate_rows(b) %>% separate_rows(c) # a b c # 1
Tidy eval now supports glue strings 所以这很好用: my_summarise5 % mutate( "mean_{{mean_var}}" :=
我有看起来像这样的数据 df = data.frame(name=c("A","A","B","B"), group=c("g1","g2","g1","g2"),
我有一个面板结构的数据框:两年内每个单元的 2 个观察值: library(tidyr) mydf % spread(year, value) %>% filter(2012 > 0.5) 以下工作但
我正在尝试使用 tidyr 包中的 extract 将包含单个字符串的列拆分为 3 个单独的列。该问题的最小工作示例如下: # A tibble: 3 x 1 question_codes
我在 R 中有以下数据框 my_df_test my_df_test V1 V2 V3 V4 V5 V6_S1 V6_S2 V7_S1 V7_S2 1 1 A S1
我有一个看起来像这样的数据框。我将其命名为“df_raw”。 "HRHHID\t15\tHOUSEHOLD IDENTIFIER\t(Part 1)\t1- 15" "HRMONTH\t2\tMONT
我搜了又搜,找到了类似的东西,但没有什么是对的。希望这个问题没有得到解答。 假设我有一个包含 Y、N 的列,有时还有额外的信息 df%separate('Surgery',c("Surgery
我想使用 tidyr 将数据分布在多个列上。 dat % gather(variable, value, -(ID:col1)) %>% unite(temp, col1, variab
tidyr 的扩展函数仅接受不带引号的列名。有没有办法可以传递包含列名的变量例如 # example using gather() library("tidyr") dummy.data % gath
我的问题类似于 this question .我正在尝试 tidyr::gather多列。但是,链接中提供的解决方案并不理想,因为所有列中的属性通常不相同,因此它们被删除。 请注意,我知道如何使用基础
我在 R 中有以下数据框 my_df_test my_df_test V1 V2 V3 V4 V5 V6_S1 V6_S2 V7_S1 V7_S2 1 1 A S1
我有一个看起来像这样的数据框。我将其命名为“df_raw”。 "HRHHID\t15\tHOUSEHOLD IDENTIFIER\t(Part 1)\t1- 15" "HRMONTH\t2\tMONT
这个问题在这里已经有了答案: Reshaping data.frame from wide to long format (8 个答案) 关闭 2 年前。 我正在尝试学习如何使用 tidyr 将宽数
我是一名优秀的程序员,十分优秀!