【问题标题】:How could I split a data.frame?我怎么能分割一个data.frame?
【发布时间】:2020-04-29 20:16:09
【问题描述】:

我有 1986 年到 2015 年的 50 个气象站降水数据。

我需要分别对每个站点从 2007 年到 2015 年的相关信息进行排序。我的意思是有三个变量:

  1. 电台名称
  2. 具体年份
  3. 降水量

我需要分别为每个站点提供结果。 有谁知道如何为此目的使用“拆分”? 可以请你从“read.table”开始写代码吗?

【问题讨论】:

  • 也许这个答案可以帮助你:How to split a data frame
  • 你能提供一些说明性和可重复的数据吗?您所说的“结果”是什么意思——总降水量、平均降水量?

标签: r dataframe split


【解决方案1】:

如果您的任务只是通过year 拆分数据帧,您可以使用split

split(df, f = df$year)

说明性数据:

(set.seed(123)
df <- data.frame(
  station = sample(LETTERS[1:3],10, replace = T),
  year = paste0("201", sample(1:9, 10, replace = T)),
  precipitation = sample(333:444, 10, replace = T)
)

结果:

$`2011`
  station year precipitation
5       C 2011           406
8       C 2011           399

$`2013`
  station year precipitation
7       B 2013           393
9       B 2013           365

$`2015`
  station year precipitation
2       C 2015           410

$`2016`
  station year precipitation
4       C 2016           444

$`2017`
  station year precipitation
3       B 2017           404

$`2019`
   station year precipitation
1        A 2019           432
6        A 2019           412
10       B 2019           349

【讨论】:

  • 亲爱的朋友,结果正是我想要的,可惜我看不懂你写的数字:(set.seed(123) df
  • 这些数字只是任何个数字,仅用作说明代码如何工作的说明材料。因此,要使代码适用于您的数据,请调整代码。与您相关的代码行是这一点:split(df, f = df$year)。顺便说一句,如果代码可以帮助您解决问题,请考虑通过单击左上角的勾号来接受答案。提前致谢!
  • 是的,我知道我需要根据自己的数据更改数字。能否请您澄清“201”、1:9 和 10 指的是什么? year = paste0("201", sample(1:9, 10, replace = T))?
  • 这只是生成一些看起来像年份的数字的快速方法:paste0 是一个将字符串粘贴在一起的函数;在这里,我们将“201”加上一个在 1 到 9 之间随机选择的数字串在一起,从而产生 2011、2017、2013 等年份。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-06
  • 1970-01-01
  • 2018-07-17
  • 1970-01-01
相关资源
最近更新 更多