【问题标题】:Trouble subsetting array by row in R在R中逐行子集数组的麻烦
【发布时间】:2018-08-14 17:36:34
【问题描述】:

我有一个数据数组,我试图仅对 OR 和 WA 状态的数据进行子集化。我正在尝试使用 STATE 行,并选择带有缩写 OR 和 WA 的任何内容。当我运行脚本时,我得到了

Error in dat_trans[dat_trans, "STATE" == "OR", ] : 
incorrect number of dimensions

这是我正在处理的数据:

dat_trans <- structure(c(
  "10263500", "   59.46390", "34.42083", "-117.8395", "CA", "old", NA,
  "10281800", "   31.38300", "36.77854", "-118.2645", "WA", "new", NA,
  "14037500", "   18.23760", "44.34155", "-118.6566", "OR", "new", NA
), .Dim = c(7L, 249L), .Dimnames = list(c("STAT_ID", 
"DRAIN_AREA", "LAT", "LON", "STATE", "STUDY", "HUC_BASIN"), NULL)) 

那么这是我尝试使用的数据子集的脚本

csv_file_name=filelist[1]
dat=read.csv(csv_file_name,header=TRUE,sep=",")
dat_trans=t(dat)

summer_storm_matrix=array() 
    for (tt in 1:ncol(dat_trans)){
      storm_gaugedata=dat_trans[dat_trans,'STATE'=='OR',tt]
      summer_storm_matrix=cbind(summer_storm_matrix,storm_gaugedata)
    }

【问题讨论】:

  • 数据图像有点用处,提供实际数据更有帮助。最好的两种方法是粘贴来自dput(head(x)) 的输出并使用data.framematrix 手动制作数据。查看您的代码,看来这实际上是data.frame,而不是arraymatrix。在这种情况下,唯一可以在`[.data.frame` 中使用第三个“维度”的情况是当您不希望它自动减少为带有drop= 参数的向量时,例如mtcars[1,1]mtcars[1,1,drop=FALSE]
  • 感谢您告诉我,对此深表歉意!如果数据相当大,我是否要粘贴整个数据集?哦,所以这是一个data.frame,而不是一个数组。是否建议将数据转换为数组,以便按状态排序?
  • 在决定data.frame-vs-array 时不应考虑“可排序性”,主要考虑 (1) 数据的结构,以及 (2) 您将使用的工具数据。你应该很少发布“你的所有数据”,而是一个有代表性的样本;这可能只是它的前 10 行(例如,dput(head(x))head);如果前 10 名变异不足,则为随机样本;或非常具体的样本数据,要么是从真实中“挑选”出来的,要么是完全虚构的。
  • 在评论中粘贴这样的数据或代码很少奏效,在这种情况下它是不完整的(它从中间开始)。请始终编辑您的问题,并将添加的数据、代码和说明直接放在问题中。

标签: r subset


【解决方案1】:

你有两个错误:

dat_trans[dat_trans, "STATE" == "OR", ]
          ^^^^^^^^^  ^     ^
  1. 不要这样做dat_trans[dat_trans...,在索引中重复 df 名称没有意义。
  2. 不要引用列“STATE”,这使它成为字符串,而不是列名。你想要STATE 列,或者更确切地说是dat_trans$STATE

解决方案:

dat_trans[dat_trans$STATE == "OR", ]

dat_trans[dat_trans$STATE == "OR", tt]

或者如果你使用 dplyr/tidyverse:

dat_trans %>% filter(STATE == "OR")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-20
    • 1970-01-01
    • 2011-07-10
    • 2016-05-10
    相关资源
    最近更新 更多