r - 在 r 中一次收集多个列
问题描述
我正在尝试gather()
一个data.frame,但不知何故它没有做我想要的。这是我的数据:
df <- data.frame("id" = c(1),
"reco_1"= c(2),
"sim_1" = c(2),
"title_1"= c(2),
"reco_2" = c(3),
"sim_2" = c(3),
"title_2"= c(3))
这就是打印出来的样子:
> df
id reco_1 sim_1 title_1 reco_2 sim_2 title_2
1 1 2 2 2 3 3 3
当我现在gather()
我的 df 时,它看起来像这样:
> df %>% gather(reco, sim, -id)
id reco sim
1 1 reco_1 2
2 1 sim_1 2
3 1 title_1 2
4 1 reco_2 3
5 1 sim_2 3
6 1 title_2 3
但是,我想要的是以下结构:
id reco sim title
1 1 2 2 2
2 2 3 3 3
我会很感激任何帮助,因为我什至不知道gather()
它是否是正确的动词。
解决方案
我们可以用pivot_longer
library(dplyr)
library(tidyr)
df %>%
pivot_longer(-id, names_to = c(".value", "new_id"), names_sep = "_") %>%
select(-id)
# A tibble: 2 x 4
new_id reco sim title
<chr> <dbl> <dbl> <dbl>
1 1 2 2 2
2 2 3 3 3
推荐阅读
- javascript - 我有办法从浏览器后退按钮历史记录中删除 URL?
- javascript - Vue-tables2 custom dropdown
- laravel - Auth::user() 在模块 __construct() 上返回 null
- ruby-on-rails - 使用 axlsx_rails 在 MS Excel 中打开生成的文件时出现问题
- c++ - 在两个类之间连接 QPushButton
- react-native - exp init Project [11:31:26] zlib:文件意外结束
- android - 为 RatingBar 设置 OnFocusChangelistener?
- android-studio - 复选框文本未垂直对齐复选框的中心
- jquery - 使用 Ajax Jquery 在 Div 中附加一个 href
- php - 有时不包含 PHPmailer 附件