เนื่องจากปัญหาเป็นเรื่องปกติของสภาพแวดล้อมทางสถิติของซอฟต์แวร์เรามาพูดคุยกันที่นี่เกี่ยวกับการตรวจสอบความถูกต้องของข้อมูลแทนที่จะทำการย้ายข้อมูลไปยังฟอรัมที่ระบุเฉพาะ R (เช่น StackOverflow)
จริงปัญหาคือการที่Date
จะถือว่าเป็นปัจจัยที่สื่อความหมายตัวแปรต่อเนื่อง - และเพื่อเส้นที่ยังไม่ได้ถูกเชื่อมต่ออย่างถูกต้อง (หรือเป็นจุดที่ถูกพล็อตอย่างแม่นยำอย่างแม่นยำในแนวนอน)
เพื่อให้พล็อตด้านขวาDate
สนามถูกแปลงจากปัจจัยเป็นวันที่จริงในแต่ละสัปดาห์มีการระบุด้วยการคำนวณอย่างง่าย (ทำลายสัปดาห์ระหว่างวันเสาร์และวันอาทิตย์) และเส้นถูกขัดจังหวะในช่วงวันหยุดสุดสัปดาห์โดยวนรอบสัปดาห์:
oracle$date <- as.Date(oracle$Date)
oracle$week.num <- (as.integer(oracle$date) + 3) %/% 7
oracle$week <- as.Date(oracle$week.num * 7 - 3, as.Date("1970-01-01", "%Y-%m-%d"))
par(mfrow=c(1,2))
plot(as.factor(unclass(oracle$Date[1:120])), oracle$Open[1:120], type="l",
main="Original Plot: Inset", xlab="Factor code")
plot(oracle$date[1:120], oracle$Open[1:120], type="n", ylab="Price",
main="Oracle Opening Prices")
tmp <- by(oracle[1:120,], oracle$week[1:120], function(x) lines(x$date, x$Open, lwd=2))
(วันที่เทียบเท่าของแต่ละสัปดาห์โดยให้วันจันทร์ของสัปดาห์นั้นถูกเก็บไว้ในoracle
dataframe ด้วยเพราะมันจะมีประโยชน์สำหรับการวางแผนข้อมูลรวมรายสัปดาห์)
ความตั้งใจดั้งเดิมสามารถทำได้ง่ายๆโดยการจำลองบรรทัดสุดท้ายเพื่อแสดงข้อมูลทั้งหมด ในการเพิ่มข้อมูลเกี่ยวกับพฤติกรรมตามฤดูกาลพล็อตต่อไปนี้จะเปลี่ยนสีตามสัปดาห์ตลอดแต่ละปีปฏิทิน:
par(mfrow=c(1,1))
colors <- terrain.colors(52)
plot(oracle$date, oracle$Open, type="n", main="Oracle Opening Prices")
tmp <- by(oracle, oracle$week,
function(x) lines(x$date, x$Open, col=colors[x$week.num %% 52 + 1]))