【发布时间】:2017-07-15 20:31:17
【问题描述】:
我有一个相当简单的动物遭遇历史数据集
我正在尝试运行一个函数,该函数将使用 tapply 代码提取每只动物的最早出现日期;
disco1<-tapply(dataSc$Date,dataSc$Final.ID,min)
但是,它给了我以下错误;
Summary.factor(c(62L, 72L, 2L, 63L, 33L, 59L, 78L, 39L), na.rm = FALSE) 中的错误: ‘min’ 对因子没有意义
我不确定为什么它不起作用,因为我的主管对类似的数据集使用了相同的代码。任何帮助都会很棒:)
这是我的数据框:
df <- structure(list(Year = c(2009L, 2009L, 2011L, 2011L, 2011L, 2011L
), Date = structure(c(48L, 4L, 60L, 64L, 16L, 22L), .Label = c("01/06/2012",
"01/08/2011", "02/01/2014", "02/03/2009", "03/03/2009", "03/06/2015",
"03/09/2011", "04/03/2015", "04/04/2015", "04/07/2012", "04/08/2012",
"04/08/2015", "05/03/2009", "05/07/2011", "05/08/2015", "06/07/2011",
"06/08/2015", "07/02/2013", "07/03/2013", "07/04/2015", "07/06/2015",
"07/07/2011", "08/06/2009", "08/06/2015", "08/07/2012", "08/08/2012",
"09/07/2015", "09/08/2011", "10/07/2011", "10/07/2013", "10/07/2015",
"10/08/2015", "11/07/2012", "11/08/2011", "11/08/2012", "12/03/2014",
"12/03/2015", "12/06/2015", "13/06/2013", "13/07/2012", "14/07/2015",
"14/08/2012", "15/08/2011", "16/02/2009", "17/07/2011", "17/07/2012",
"17/08/2011", "18/02/2009", "18/07/2011", "18/08/2011", "19/07/2011",
"19/08/2011", "19/08/2015", "20/06/2011", "20/06/2015", "20/07/2012",
"21/02/2009", "21/06/2011", "21/08/2012", "22/06/2011", "23/08/2012",
"24/07/2011", "24/08/2011", "26/06/2011", "26/07/2011", "26/08/2011",
"26/08/2012", "27/07/2015", "28/03/2015", "28/07/2011", "28/08/2012",
"29/03/2015", "29/07/2011", "29/08/2011", "30/04/2015", "30/07/2012",
"30/08/2011", "30/08/2012", "31/01/2013", "31/08/2011"), class = "factor"),
Final.ID = structure(c(22L, 12L, 12L, 28L, 12L, 17L), .Label = c("SWT1",
"SWT11", "SWT13", "SWT14", "SWT15", "SWT16", "SWT17", "SWT19",
"SWT2", "SWT21", "SWT22", "SWT23", "SWT24", "SWT27", "SWT28",
"SWT29", "SWT3", "SWT30", "SWT32", "SWT37", "SWT38", "SWT45",
"SWT46", "SWT47", "SWT48", "SWT49", "SWT5", "SWT50", "SWT51",
"SWT52", "SWT56", "SWT58", "SWT6", "SWT61", "SWT62", "SWT65",
"SWT7", "SWT73", "SWT8", "SWT9", "T-014", "T001", "T002",
"T003", "T004", "T005", "T005CC", "T006", "T006C", "T009",
"T010", "T010C", "T010CC", "T011", "T012", "T013", "T014",
"T015", "T015CC", "T016", "T018", "T018C", "T018CC", "T018CCC",
"T019", "T019C", "T019CC", "T020", "T021", "T021C", "T021CC",
"T021CCC", "T022", "T022C", "T022CC", "T023", "T024", "T025",
"T027", "T029", "T034", "T041", "T041C", "T042", "T043",
"T044", "T044C", "T045", "T045C", "T046", "T046C", "T047",
"T047C", "T048", "T049", "T050", "T051", "T052", "T053",
"T053C", "T054", "T056", "T056C", "T057", "T058", "T059",
"T060", "T060C", "T061", "T063", "T065", "T065C", "T068",
"T070", "T071", "T072", "T073", "T074", "T079", "T082", "T084",
"T086", "T087", "T087C", "T089", "T091", "T091C", "T094",
"T095", "T096", "T097", "T097CC", "T098", "T099", "T100",
"T101", "T101C", "T102", "T102C", "T103", "T104", "T113",
"T115", "T117", "T118", "T118C", "T123", "T124", "T124C",
"T125", "T126", "T127", "T128", "T129", "T130", "T131", "T132",
"T133", "T133C", "T134", "T135", "T136", "T137", "T138",
"T139", "U011"), class = "factor"), Data = structure(c(1L,
1L, 1L, 1L, 1L, 1L), .Label = c("Acoustic", "Photo"), class = "factor")), .Names = c("Year",
"Date", "Final.ID", "Data"), row.names = c(NA, 6L), class = "data.frame")
【问题讨论】:
-
怀疑你的日期是一个字符向量而不是日期。如果您包含一些数据(使用
dput(head(dataSC))),它会更容易提供帮助。 -
我也是这么想的,但我不知道如何让它识别日期。我已经添加了上面 dput(head(dataSC) 的结果
-
尝试
as.Date(dataSc$Date, format = "%d/%m/%Y")或lubridate::dmy(dataSc$Date)约会 -
日期代码有效,但 tapply 仍然返回相同的错误:(
-
您记得将日期分配回 data.frame 吗?
dataSc$Date <- as.Date(...