【问题标题】:Subsetting a dataset based on a list [duplicate]基于列表对数据集进行子集[重复]
【发布时间】:2016-06-06 19:24:24
【问题描述】:

测量员提交他们在一个季节捕获的所有鸟类。我想对他们的捕获进行子集化,所以每个物种都是他们自己的数据框。我可以写出各个物种,例如我在下面最后一行中所做的。但我想比这更圆滑,不必经历整个 300 种可能的物种。选项?

Birds <-c()
Birds$Species <-c("REVI","SCTA","REVI","KIWA","BAOR","MAWA","MAWA","BAOR")
Birds <- as.data.frame(Birds)
sp <- unique(Birds$Species)
REVI <- subset(Birds,Species=="REVI")

谢谢。

【问题讨论】:

  • help(split),请根据示例数据提供所需的结果。

标签: r subset


【解决方案1】:

正如@Richard Scriven 指出的那样,您可以使用split 轻松做到这一点。这应该有效:

res<-split(Birds,Birds$Species)

我们告诉 R 用 Species 变量分割 Birds 数据框。然后你可以通过简单的调用来访问特定的物种级别data.frames,例如:

res[["BAOR"]]

  Species
5    BAOR
8    BAOR

我们可以看到结果其实是data.frame by:

class(res[["BAOR"]])
[1] "data.frame"

【讨论】:

  • 首先,感谢您的帮助。我的最终目标是为每个物种创建一个 shapefile。既然这些现在都打包在一起(res),那它是如何工作的?为了简单起见,您将如何为每个物种编写一个 excel 文件? write.xlsx(res,'S:/Bird_data/Species.xlsx'
猜你喜欢
  • 2020-02-08
  • 1970-01-01
  • 2017-03-24
  • 1970-01-01
  • 2019-09-07
  • 1970-01-01
  • 2021-04-25
  • 1970-01-01
  • 2015-01-24
相关资源
最近更新 更多