【问题标题】:Double splitting datasets in RR中的双重拆分数据集
【发布时间】:2021-05-13 11:24:40
【问题描述】:

有没有办法将数据集拆分为其原始组件的排列?例如,我刚才意识到 split() 将数据集(和选择的列)拆分为列的每个元素的迷你数据集,但是如果我有一个数据集“冠军”,其中列“问题”和元素

a, b, c

和带有元素的“年”

2018, 2019

(在其他列中)并且我想为“冠军”中具有“问题”= 1、年份=“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"))

【问题讨论】:

  • 您必须提供数据集和预期结果
  • @Onyambu 感谢您的评论!我很难弄清楚如何给出数据集的任何部分,但我已经更新了帖子以澄清我的预期结果
  • dput(head(data, 10)) 然后复制粘贴到这里。或者只是复制数据集并将其粘贴到

标签: r split


【解决方案1】:

您可以为每个question 和year 拆分数据集,根据选择分配名称并使用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

在全球环境中创建多个数据集不是一个好习惯。您应该将它们保存在列表中,这样更容易管理它们。

【讨论】:

    猜你喜欢
    • 2019-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-07
    • 2023-01-22
    相关资源
    最近更新 更多