Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中的双分裂数据集_R_Split - Fatal编程技术网

R中的双分裂数据集

R中的双分裂数据集,r,split,R,Split,有没有办法将数据集拆分为原始组件的排列?例如,我刚刚意识到split()将数据集(以及选定的列)拆分为列中每个元素的迷你数据集,但如果我有一个数据集“锦标赛”,其中列“问题”中包含元素 a, b, c 2018, 2019 和“年”元素 a, b, c 2018, 2019 (在其他专栏中)我想为“锦标赛”中“问题”=1,year=“2018”的所有观察结果以及其他专栏中的任何元素创建迷你数据集,我将如何做到这一点 编辑:此外,我正在处理的列的元素比这些示例多得多,因此如何为每个列创建新

有没有办法将数据集拆分为原始组件的排列?例如,我刚刚意识到split()将数据集(以及选定的列)拆分为列中每个元素的迷你数据集,但如果我有一个数据集“锦标赛”,其中列“问题”中包含元素

a, b, c
2018, 2019
和“年”元素

a, b, c
2018, 2019
(在其他专栏中)我想为“锦标赛”中“问题”=1,year=“2018”的所有观察结果以及其他专栏中的任何元素创建迷你数据集,我将如何做到这一点

编辑:此外,我正在处理的列的元素比这些示例多得多,因此如何为每个列创建新对象

我的预期结果基本上是我想象的,如果我将filter()函数应用于“问题”的每个元素,然后应用于“年”的每个元素,然后为这些输出中的每个元素创建对象,将会发生什么

数据集:

structure(list(id = structure(c(25, 25, 25, 25, 25, 25, 25, 25, 
25, 25), format.stata = "%8.0g"), year = structure(c(2018, 2018, 
2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018), format.stata = "%8.0g"), 
    round = structure(c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), format.stata = "%8.0g"), 
    question = structure(c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), format.stata = "%8.0g"), 
    correct = structure(c(0, 0, 0, 0, 0, 0, 1, 0, 1, 0), format.stata = "%8.0g")), row.names = c(NA, 
-10L), class = c("tbl_df", "tbl", "data.frame"))

您可以为每个
问题
年份
拆分数据集,根据选择分配名称,并使用
list2env
在全局环境中创建单个数据集

data <- split(df, list(df$question, df$year))
names(data) <- sub('(\\d+)\\.(\\d+)', 'question\\1_year\\2', names(data))
names(data)
# [1] "question1_year2018"  "question2_year2018"  "question3_year2018" 
# [4] "question4_year2018"  "question5_year2018"  "question6_year2018" 
# [7] "question7_year2018"  "question8_year2018"  "question9_year2018" 
#[10] "question10_year2018"

list2env(data, .GlobalEnv)

question1_year2018
# A tibble: 1 x 5
#     id  year round question correct
#  <dbl> <dbl> <dbl>    <dbl>   <dbl>
#1    25  2018     1        1       0

question2_year2018
# A tibble: 1 x 5
#     id  year round question correct
#  <dbl> <dbl> <dbl>    <dbl>   <dbl>
#1    25  2018     1        2       0

数据您必须提供一个数据集和预期的results@Onyambu谢谢你的评论!我不知道如何给出数据集的任何部分,但我更新了帖子,以澄清我的预期结果
dput(head(data,10))
然后复制粘贴到这里。或者只是复制数据集并粘贴到其中