باستخدام read.zoo بدلاً من read.table و zoo ()؟
-
26-09-2019 - |
سؤال
لدي ملف به العديد من الصفوف من هذا النوع
2010-01-12 19:40 1021.00000 0.00001 1.00
2010-01-12 19:50 1031.00000 0.00000 -1.00
من أجل قراءتها كحديقة حديقة الحيوان التي أستخدمها
tmp <- read.table("myfile")
GOEMD <- zoo(tmp[,3], as.chron(paste(tmp[,1],tmp[,2]), format="%Y-%m-%d %H:%M"))
يعمل بشكل صحيح ولكن أود استخدامه read.zoo()
في حين أن.
لقد حاولت
f <- function(x) as.chron(paste(tmp[,1],tmp[,2]))
tmp <- read.zoo("myfile", index = 1:2, sep=" ", FUN = f)
وحتى تحديد
colClasses= c("character","character","numeric","numeric","numeric")
لكنه لا يعمل ؛ يقول: السطر 136 (الخط الذي لصقه أعلاه) ليس لديه 14 عنصرًا.
لقد حاولت أيضًا:
tmp <- read.zoo("myfile", index = 1:2, sep=" ", FUN = as.chron)
المحلول
- خطأ مطبعي
f
تم الإشارة بالفعل. - أيضا هناك بعض الميزات
read.zoo
التي قد ترغب في الاستفادة منها. أولاً ، لاحظ أنه إذا كانت قيمةindex
الوسيطة عبارةFUN
. لاحظ أيضًا أن أFUN2
الحجة متوفرة التي يتم تطبيقها على إخراجFUN
لذلك يمكننا كتابتها بطريقة مضغوطة مثل هذا:
وهكذا جرب هذا:
library(zoo)
library(chron)
Lines <- "2010-01-12 19:40 1021.00000 0.00001 1.00
2010-01-12 19:50 1031.00000 0.00000 -1.00"
z <- read.zoo(textConnection(Lines), index = list(1, 2),
FUN = paste, FUN2 = as.chron)
تم كتابة ما سبق ليكون محتوى ذاتيًا حتى تتمكن من نسخه حرفيًا إلى الحافظة ثم لصقه في جلسة R الخاصة بك. لاستخدامه مع استبدال ملفك textConnection(Lines)
مع "myfile"
.
نصائح أخرى
وظيفتك f
يجب أن تبحث عن tmp
. ربما كنت تنوي:
f <- function(x) as.chron(paste(x[,1],x[,2]))
tmp <- read.zoo("myfile", index = 1:2, sep=" ", FUN = f)
أيضًا ، تبدو البيانات التي قمت بنشرها وكأنها محددة في علامة التبويب ، وليست مساحة ، لذلك قد تحتاج إلى ذلك بدلاً من ذلك:
tmp <- read.zoo("myfile", index = 1, sep="\t", FUN = as.chron)
لا تنتمي إلى StackOverflow