【问题标题】:finding minimum in a column based on a unique id in r根据 r 中的唯一 id 在列中找到最小值
【发布时间】:2013-11-21 23:16:11
【问题描述】:

需要一些帮助来使用一个简单的 r 命令来做一些通过 excel 中的枢轴完成的事情。 我有一个包含 2 个变量 ID 和日期的表。我需要一个可以创建一个数据框的命令,该数据框具有这些 ID 的唯一列表以及该 ID 的最短日期。

例如,假设我的数据框是转置的(ID 列表是 col 1,Date2 在 col 2)

ID:    ID1 ID1 ID2 ID2 ID3
Date: Mar 01 Mar 02 Mar03 Mar 04 Mar 05

我需要一个数据框来提供

ID1  Mar01
ID2  Mar03
ID3  Mar05

【问题讨论】:

  • 你能发布你实际拥有的数据吗? ID 和日期是独立的向量吗? dput() 是你的朋友...
  • 请向我们展示您尝试过的代码以及为什么它不起作用。谢谢!

标签: r excel minimum


【解决方案1】:

这里的关键是使用as.Date 作为日期数据类型,并使用其中给定的格式之一,请参阅?format.Date 的格式类型。让我们创建一个输入表的示例: df_input<-data.frame(ID=sample(1:5), Date=as.Date(sample(c("2012-10-03", "2012-11-03", "2012-12-03"), size= 5,replace=T))) 现在使用sort 对输入数据框进行排序。喜欢: sort(df_input$Date)

祝你有美好的一天!此外,如果您在导入文件时需要帮助,请尝试以下操作:Unable to import data from a sample Excel file

【讨论】:

  • OP 示例有重复的 ID;他们想选择数据的一个子集,而不仅仅是排序,我想。既然已经有了一个例子,为什么还要再做一个新例子?
  • :) 我错过了这一点!但是可以通过duplicated()修复。在进一步发布之前,我会等待 OP 的 cmets。
【解决方案2】:

这是我对此的解释。

您从一个看起来像这样的data.frame 开始。 (我在data.frame 中添加了一个额外的乱序值,所以我的答案与你的不同)。

mydf <- data.frame(ID = c("ID1", "ID1", "ID2", "ID2", "ID3", "ID3"),
                   Date = c("Mar 01", "Mar 02", "Mar 03", "Mar 04", "Mar 05", "Mar 04"))
mydf
#    ID   Date
# 1 ID1 Mar 01
# 2 ID1 Mar 02
# 3 ID2 Mar 03
# 4 ID2 Mar 04
# 5 ID3 Mar 05
# 6 ID3 Mar 04

首先,从“日期”列中创建实际的“日期”对象。我假设您的日期格式是“星期一”,所以我在strptime 中使用了"%b %d"。由于没有年份,因此假定为当前年份。

Date2 <- strptime(mydf$Date, format="%b %d")  ## ASSUMES THE CURRENT YEAR
Date2
# [1] "2013-03-01" "2013-03-02" "2013-03-03" "2013-03-04" "2013-03-05" "2013-03-04"

接下来,找到一个函数,让我们按您的“ID”变量对这些日期进行排序。在基础 R 中,ave 非常方便地做到这一点。

ave(as.numeric(Date2), mydf$ID, FUN = order)
# [1] 1 2 1 2 2 1

使用这些值对具有每个 ID 的第一个(最低)值(即结果等于“1”)的行进行子集化。

mydf[ave(as.numeric(Date2), mydf$ID, FUN = order) == 1, ]
#    ID   Date
# 1 ID1 Mar 01
# 3 ID2 Mar 03
# 6 ID3 Mar 04

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-22
    • 2022-01-23
    • 1970-01-01
    • 2022-09-23
    • 2013-05-08
    • 2015-11-28
    • 1970-01-01
    • 2011-06-28
    相关资源
    最近更新 更多