r - 通过使用 dplyr 添加包含序列号的变量来扩展(爆炸?)data.frame
问题描述
我有简单的数据框,比如说:
dd <- data.frame(id = letters[1:4], v1 = c(0.3,0.1,0.7,1.3))
dd
id v1
1 a 0.3
2 b 0.1
3 c 0.7
4 d 1.3
对于这个数据框的每一行,我想通过添加一个给出数字序列的新变量来“分解”它。我成功地做到了这一点,但我的代码并不理想,而且几乎不能消耗:
dd %>%
mutate("0"=0,"5"=5,"10"=10) %>%
reshape2::melt(id.vars=c("id", "v1")) %>%
select(-variable)
id v1 value
1 a 0.3 0
2 b 0.1 0
3 c 0.7 0
4 d 1.3 0
5 a 0.3 5
6 b 0.1 5
7 c 0.7 5
8 d 1.3 5
9 a 0.3 10
10 b 0.1 10
11 c 0.7 10
12 d 1.3 10
因此,在此示例中,对于每一行,我添加一个名为的列value
,其中包含所有三个值c(0,5,10)
这段代码并不理想,因为我想要的实际序列非常多1:70
,我不想mutate
手动编写所有 70 个新变量。肯定有更好的方法可以做到这一点,你能帮我吗?
我不必待在家里,dplyr
但我希望不能管理我的代码。
谢谢
解决方案
library(tidyr)
dd %>% crossing(value = c(0, 5, 10))
id v1 value
1 a 0.3 0
2 a 0.3 5
3 a 0.3 10
4 b 0.1 0
5 b 0.1 5
6 b 0.1 10
7 c 0.7 0
8 c 0.7 5
9 c 0.7 10
10 d 1.3 0
11 d 1.3 5
12 d 1.3 10
推荐阅读
- python - 如何从 txt 文件中删除特定行和以下 n 行?
- linux - 如何验证 bash 脚本上的用户输入?
- ios - 集合视图单元格中子视图的动画 alpha
- javascript - 尝试创建单独的 React 组件来接受道具并在新窗口中从这些道具返回动态 Google 搜索
- javascript - jQuery:自动将缩写标签添加到定义的首字母缩写词
- java - JavaParser:检测 FieldDeclaration 是否为接口类型
- python - 如何创建一个表来显示 python 中每种数据类型的计数?
- php - laravel 6 定义路径
- typescript - 量角器/黄瓜:动态选择日历上的第一个可用日期 - 承诺未解决
- reactjs - 如何在 React 中递归构建答案对象?