0
다음을 포함하는 데이터 프레임의 한 행을 기반으로 한 동물의 매주 발생 이력을 포함하는 새 데이터 프레임을 생성하려고합니다. 동물 ID (BandNo) 첫 번째와 마지막 날 우리가 그것을 추적 (FDay, Lday), 그리고 동물의 운명을 추적했을 때 (운명)뿐만 아니라 다른 공변량. 여기 lapply에서 새 데이터 프레임 생성 및 채우기 - "x를 POSIXlt 클래스로 변환하는 방법을 모름"
한 개인, 개체에 대한 예를 들어, 데이터 프레임 "A"structure(list(BandNo = structure(1L, .Label = c("1234", "4201",
"4203", "4205", "4207", "4208", "4209", "4213", "4214", "4215",
"4216", "4217", "4219", "4221", "4223", "4224", "4226", "4227",
"4228", "4229", "4230", "4231", "4232", "4233", "4234", "4236",
"4237", "4238", "4239", "4241", "4242", "4245", "4247", "4248",
"4249", "4253", "4254", "4256", "4257", "4258", "4259", "4261",
"4262", "4263", "4264", "4271", "4272", "4273", "4276", "4277",
"4280", "4282", "4284", "4288", "4289", "4292", "4293", "4296",
"4298", "4299", "4501", "4502", "4503", "4504", "4505", "4507",
"4508", "4509", "4510", "4511", "4512", "4513", "4514", "4515",
"4516", "4517", "4518", "4519", "4520", "4521", "4525", "4526",
"4527", "4529", "4530", "4532", "4535", "4539", "4596", "4598",
"4599", "6101", "6102", "6104", "6105", "6106", "6107", "6108",
"6109", "6111", "6112", "6113", "6114", "6115", "6116", "6118",
"6119", "8002", "8003", "8004", "8005", "8006", "8007", "8008",
"8009", "8010", "8011", "8012", "8013", "8014", "8015", "8017",
"8018", "8019", "8020", "8021", "8097", "8098", "8099", "8402",
"8403", "8404", "8405", "8406", "8408", "8409", "8410", "8411",
"8412", "8413", "8414", "8416", "8417", "8418", "8419", "8422",
"8423", "8426", "8427", "8429", "8430", "8431", "8432", "8433",
"8458", "8497", "8498"), class = "factor"), FDay = structure(1380171600, class = c("POSIXct",
"POSIXt"), tzone = "America/Bogota"), Lday = structure(1392094800, class = c("POSIXct",
"POSIXt"), tzone = "America/Bogota"), ObsLength = 138, Fate = "Predation",
FieldName = structure(7L, .Label = c("Bryan", "Dassow", "H1",
"H2", "NARD", "SAY160", "SAY320", "SAY40A", "Schaeffer",
"SIB", "Wessels"), class = "factor"), Landscape = structure(2L, .Label = c("CHW",
"SAY", "SIB"), class = "factor"), Sex = structure(1L, .Label = c("F",
"M"), class = "factor")), .Names = c("BandNo", "FDay", "Lday",
"ObsLength", "Fate", "FieldName", "Landscape", "Sex"), row.names = 1L, class = "data.frame")
나는 성공적으로이 코드를 사용하여 내가 원하는 새로운 데이터 프레임 (y)를 생성 할 수 있습니다
:
library(lubridate)
mydate<-seq(from=a$FDay,to=a$Lday,by='week')
newband<-rep(a$BandNo,length(mydate))
newfate<-rep("Survive",length(mydate))
newfate[length(mydate)]<-a$Fate
y<-data.frame(newband,mydate,newfate)
y$FieldName<-a$FieldName
y$Sex<-a$Sex
y$Landscape<-a$Landscape
y$WeekID<-week(a$mydate)
y$Year<-year(a$mydate))
을하지만, 다음 코드를 사용하여 하나의 행 데이터 프레임 목록에 적용하려고하면 x를 "POSIXlt 클래스로 변환하는 방법을 모르겠다"라는 오류 메시지가 나타납니다.
이전 단계는 랩에 사용되었습니다. 지금 플라이에 오류가 발생했습니다
b<-list(a)
d<-lapply(b,function(x){
mydate<-seq(from=x$FDay,to=x$Lday,by='week')
newband<-rep(x$BandNo,length(mydate))
newfate<-rep("Survive",length(mydate))
newfate[length(mydate)]<-x$Fate
y<-data.frame(newband,mydate,newfate)
y$FieldName<-x$FieldName
y$Sex<-x$Sex
y$Landscape<-x$Landscape
y$WeekID<-week(x$mydate)
y$Year<-year(x$mydate)})
어떤 도움을 주셔서 감사합니다!
나열된 코드에 몇 가지 문제점이 있습니다. 먼저, lapply를 열고 닫을 브래킷이 필요합니다. 코드를 지금 실행하면 구문 오류가 발생합니다. 구문 오류가 발생하면 해석기가 다음 줄을 계산하려고하기 때문에 "오류 : 개체 'x'을 (를) 찾을 수 없습니다. x 지점을 찾을 수 없습니다. 코드를 수정하여 평가할 수 있습니까? – jimmyb
나는 그 변화를 만들었습니다, 미안 해요. 이제 다른 오류가 있습니다. "as.POSIXlt.default (x, tz = tz (x))의 오류 : 'x'를"POSIXlt "클래스로 변환하는 방법을 모른다. 정의와 같이 간단합니까? 어쨌든? – tlyons253
'x $ mydate'는'x'에 컬럼 mydate가없고'NULL'을'POSIXct'로 변환 할 수 없기 때문에'NULL '입니다. 아마도'mydate'일까요? 'x $ mydate' 대신 – NicE