【问题标题】:R - selecting data with [a:b, c:d] not workingR - 使用 [a:b, c:d] 选择数据不起作用
【发布时间】:2017-10-24 06:38:58
【问题描述】:

得到一个包含一堆行 (1-285) 和列 (x__1-x__70) 的数据集。尝试从第 12 行和第 13 行中选择数据,从列 x__5 到 x__70。

我可以选择单个单元格WPP[12,"x__5"]、整列WPP[,x__5]、整行WPP[12,]、整行范围WPP[12:13,],但不能选择列范围。

我想要WPP[12:13,"X__5":"x__70"],但我明白了:

““X__5”中的错误:“x__70”:NA/NaN 参数 另外:警告信息: 1:在 check_names_df(j, x) 中:强制引入的 NA 2:在 check_names_df(j, x) 中:强制引入的 NAs"

【问题讨论】:

  • WPP[12:13,colnames(WPP) %in% c("X__5","X__70")]
  • 你需要对你的 DF 进行子集()。
  • WPP[12:13,5:70]

标签: r


【解决方案1】:

我在R中转换一些SAS代码时也遇到了这个问题。不幸的是R没有任何机制可以用于此目的。

因此,使用可用的工具集执行此操作很重要。在 R 中,您可以按名称对列进行子集化(您必须明确给出所有列名)或位置索引。

以下是两种解决方案:

  1. WPP[12:13, paste0("X__", 5:70)] # explicit column names
  2. requiredColIndex <- which(names(WPP) %in% paste0("X__", 5:70)) WPP[12:13, requiredColIndex] # using the index of columns

您还可以使用子集函数,如 cmets 中所指出的那样。

rowIndex <- 1:nrow(mtcars) %in% 12:15
subset(mtcars, rowIndex, select=wt:gear)

但是在子集中设置行有点棘手,正如您可以在上面的代码中观察到的那样。但是您可以随时使用,如下所示:

subset(mtcars[12:15, ], select=wt:gear)

这将给出类似的结果。

但是,如果您使用数据框方式/方法对行进行子集化,则使用类似的数据框方式/方法对列进行子集化会更容易。

【讨论】:

    猜你喜欢
    • 2021-12-16
    • 2014-07-04
    • 2012-07-27
    • 2022-11-29
    • 2017-04-21
    • 2013-09-02
    • 2015-06-05
    • 2023-03-24
    • 1970-01-01
    相关资源
    最近更新 更多