【问题标题】:Split dataset into two csvs based on 1 or 0 [duplicate]根据 1 或 0 将数据集拆分为两个 csv [重复]
【发布时间】:2017-06-09 20:01:07
【问题描述】:

我有一个数据集,我想将其拆分为两个数据集 - 一个保留在美国发生的事件的所有行,另一个保留在美国以外发生的所有事件。我有一列用于指定 US 1,否则为 0,因此 US 中的所有行都标记为 1,其他所有行都标记为 0。我希望将它们放入两个数据集中。这是我的数据集的示例

id  variable1  variable2  variable3  Country  US?
1      x           x2         x3        US     1
2      x           x2         x3        US     1
3      x           x2         x3      Mexico   0
4      x           x2         x3        US     1
5      x           x2         x3      Canada   0

我想要的是这样的,根据美国与否分为两个数据集......

美国:

id  variable1  variable2  variable3  Country  US?
1      x           x2         x3        US     1
2      x           x2         x3        US     1
4      x           x2         x3        US     1

非美国:

3      x           x2         x3      Mexico   0
5      x           x2         x3      Canada   0

【问题讨论】:

  • 看看split

标签: r


【解决方案1】:

我们可以使用split 变成listdata.frames

lst <- split(df1, df1$`US?`)

【讨论】:

    【解决方案2】:

    使用lapply的选项:

    lapply(c(0,1),function(ix) data[data$US? == ix,])

    【讨论】:

      【解决方案3】:

      这是一种方法。假设您的数据存储如下:

      d <- structure(
        list(
          id = 1:5,
          variable1 = c("x", "x", "x", "x", "x"),
          variable2 = c("x2", "x2", "x2", "x2", "x2"),
          variable3 = c("x3",
                        "x3", "x3", "x3", "x3"),
          Country = c("US", "US", "Mexico", "US",
                      "Canada"),
          US. = c(1L, 1L, 0L, 1L, 0L)
        ),
        .Names = c("id", "variable1",
                   "variable2", "variable3", "Country", "US."),
        class = "data.frame",
        row.names = c(NA,-5L)
      )
      

      您可以这样拆分它们:

      d1 <- subset(d, US. == 1)
      d2 <- subset(d, US. == 0)
      

      然后使用你喜欢的对象。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-03-12
        • 2016-09-28
        • 2020-04-23
        • 1970-01-01
        • 2021-04-29
        • 1970-01-01
        • 2021-01-26
        相关资源
        最近更新 更多