【问题标题】:R - Subset a data frame (into multiple files) given IDs from multiple datasetsR - 给定来自多个数据集的 ID 子集数据框(到多个文件中)
【发布时间】:2018-03-06 16:51:18
【问题描述】:

让 G 成为我的“主数据框”,其中包含多个列,包括“id”。 令 S[i] 为仅包含 1 列 = "id" 的多个文件。

G和S[i]中的“id”相同。

我想创建 H[i],它是 G 的一个子集。 H[i] 包含 G 中的所有列,但仅包含 S[i] 中的观察值(或 S[i] 中的“ids”)。

例子:

G

id     x     y
1      1     3
2      1     4
3      2     6
4      3     4
5      4     5
6      4     1

S[1]

id
2
3
6

H[1] 将是

id    x     y
2     1     4
3     2     6
6     4     1

【问题讨论】:

  • G 在哪里?给定 S 中的 i,H 应该来自 G。

标签: r dataframe subset


【解决方案1】:

假设您创建了一个名为 H 的空结果列表,您可以像这样遍历 S 中的项目:

H <- list()

for(x in 1:length(S))
{
  H[[x]] <- subset(G, id %in% S[[x]]$id)
}

【讨论】:

  • 我让 i=10。我得到以下信息: [[1]] [1] id x y (或 0-length row.names) 。 . . . [[10]] [1] id x y (或 0-length row.names) 不是我想要的。我的问题有什么需要澄清的吗?
  • str(S[1]) 会返回什么?
  • > str(S[1]) List of 1 $ :'data.frame': 10 obs。 1 个变量:..$ id:因子 w/10 个级别“1329”,“1397”,..:6 4 5 7 10 8 9 2 3 1
  • OK:调整 for 循环中的行,如下所示:H[[x]] &lt;- subset(G, id %in% S[[x]]$id)
  • 哇太棒了。刚刚发生了什么? str() 有什么帮助?
【解决方案2】:

lapply 中考虑merge

H <- lapply(S, function(x) merge(G, x, by="id"))

【讨论】:

    猜你喜欢
    • 2016-06-02
    • 1970-01-01
    • 2021-08-01
    • 2022-07-19
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    • 2014-08-24
    • 1970-01-01
    相关资源
    最近更新 更多