首页 > 解决方案 > 选择行,根据行创建单独的数据集

问题描述

我有一个看起来像这样的数据集。

# A tibble: 6 x 39
  AssignmentId WorkerId Input.image_url Answer.action1.… Answer.action2.… Answer.comments Answer.gaze1.ga… Answer.gaze2.ga…
  <chr>        <chr>    <chr>                      <int>            <int>           <int>            <int>            <int>
1 30MVJZJNHNI… AW13W4W… 450.png                        0                0              NA                0                0
2 3BDCF01OGYZ… A253S5S… 450.png                        0                1              NA                1                0
3 3U0SRXB7CEA… A3GIXRS… 450.png                        1                1              NA                1                0
4 3D4CH1LGEBY… A1SK0GV… 1141.png                       1                0              NA                1                0
5 3MTMREQS4WN… AK0R311… 1141.png                       1                0               0                0                1
6 3WMOAN2SRC2… A11FQTH… 1141.png                       1                0              NA                0                0

基本上,我要做的是根据Input.image.url变量抓取行并创建单独的数据集。Input.image.url选择每个唯一变量的第一行并将它们组合起来。因此将有三个数据集具有这样的行。

> head(first_half_2)
# A tibble: 6 x 39
  AssignmentId WorkerId Input.image_url Answer.action1.… Answer.action2.… Answer.comments Answer.gaze1.ga… Answer.gaze2.ga…
  <chr>        <chr>    <chr>                      <int>            <int>           <int>            <int>            <int>
1 3UOUJI6MTEJ… A1OYE3D… 450.png                        1                0              NA                1                0
2 3OVHNO1VE76… ALWYZOT… 1141.png                       0                1             114                0                1
3 3WI0P0II62X… A2BSMM8… 1039.png                       0                1              25                1                0
4 3UXUOQ9OKF2… A1RK4PG… 1067.png                       0                0              NA                0                0
5 3JPSL1DZ5T4… A1RK4PG… 111.png                        0                0              NA                0                0
6 35LDD5557B9… A253S5S… 1141.png                       1                0              NA                1                0

提前致谢!!

标签: rdataframetidyverse

解决方案


可能我们需要通过 'Input.image_url' 创建一个序列列并split基于它到 a listof data.frames

grp <- with(first_half_2, ave(seq_along(Input.image_url), 
      Input.image_url, FUN = seq_along))
lst1 <- split(first_half_2, grp)

或更紧凑地使用rowidfromdata.table

library(data.table)
split(first_half_2, rowid(first_half_2$Input.image_url))

推荐阅读