library(swirl)
swirl()
Explore the data
dim(pm0)
head(pm0)
Making the first row of names
cnames<- strsplit(cnames, "|", fixed = T)
names(pm0)<-make.names(cnames[[1]][wcol])
The measurements of particulate matter (pm25) are in the column named Sample.Value. Assign this component of pm0 to the variable x0
x0<-pm0$Sample.Value
What percentage of values are missing in this vector?
mean(is.na(x0))
Same actions for 2012 data
names(pm1)<-make.names(cnames[[1]][wcol])
x1<-pm1$Sample.Value
mean(is.na(x1))
summary(x0)
summary(x1)
boxplot(x0,x1)
boxplot(log10(x0), log10(x1))
AMount of negative values
negative <- x1<0
sum(negative, na.rm = TRUE)
mean(negative, na.rm = TRUE)
When does the negative data occure?
dates<-pm1$Date
dates<-as.Date(as.character(dates), "%Y%m%d")
hist(dates[negative], "month")
Biding county and monitors together, We see that 10 monitors in New York State were active in both 1999 and 2012.
str(site0)
str(site1)
both<-intersect(site0, site1)
Creating var with NY county and monitors
cnt0 <- subset(pm0, State.Code == 36 & county.site %in% both)
cnt1 <- subset(pm1, State.Code == 36 & county.site %in% both)
This will split cnt0 into several data frames according to county.site (that is, monitor IDs) and tell us how many measurements each monitor recorded.
sapply(split(cnt0, cnt0$county.site), nrow)
sapply(split(cnt1, cnt1$county.site), nrow)
We want to examine a monitor with a reasonable number of measurements so let’s look at the monitor with ID 63.2008.
pm0sub<-subset(cnt0, County.Code== 63 & Site.ID == 2008 )
pm1sub<-subset(cnt1, County.Code== 63 & Site.ID == 2008 )
Now we’d like to compare the pm25 measurements of this particular monitor (63.2008) for the 2 years.
x0sub<- pm0sub$Sample.Value
x1sub<- pm1sub$Sample.Value
We’d like to make our comparison visually so we’ll have to create a time series of these pm25 measurements
dates0<-as.Date(as.character(pm0sub$Date),"%Y%m%d" )
dates1<-as.Date(as.character(pm1sub$Date),"%Y%m%d" )
plotting the difference
par(mfrow=c(1,2), mar = c(4,4,2,1))
plot(dates0, x0sub, pch = 20)
abline(h = median(x0sub, na.rm = TRUE),lwd=2)
plot(dates1, x1sub, pch = 20)
abline(h = median(x1sub, na.rm = TRUE),lwd=2)
rng<- range(x0sub, x1sub, na.rm=TRUE)
a comparison of all the states’ mean pollution levels.
mn0 <- with(pm0,tapply(Sample.Value,State.Code,mean,na.rm=TRUE))
mn1 <- with(pm1,tapply(Sample.Value,State.Code,mean,na.rm=TRUE))
dim(mrg)
[1] 52 3
| Keep working like that and you'll get there!
|
|======================================================= | 89%
| We see merge has 52 rows and 3 columns. Since the Virgin Island data
| was missing from d1, it is excluded from mrg. Look at the first few
| entries of mrg using the head command.
Plotting the results
with(mrg, plot(rep(1, 52), mrg[, 2], xlim = c(.5, 2.5)))#points
| Not quite, but you're learning! Try again. Or, type info() for more
| options.
| Type mrg[mrg$mean.x < mrg$mean.y,] at the command prompt.
with(mrg, points(rep(2, 52), mrg[, 3]))#points
| One more time. You can do it! Or, type info() for more options.
| Type mrg[mrg$mean.x < mrg$mean.y,] at the command prompt.
segments(rep(1, 52), mrg[, 2], rep(2, 52), mrg[, 3])#connect the dots
| That's not exactly what I'm looking for. Try again. Or, type info() for
| more options.
| Type mrg[mrg$mean.x < mrg$mean.y,] at the command prompt.
mrg[mrg$mean.x < mrg$mean.y,]
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3J9CmxpYnJhcnkoc3dpcmwpCnN3aXJsKCkKYGBgCgpFeHBsb3JlIHRoZSBkYXRhCmBgYHtyfQpkaW0ocG0wKQpoZWFkKHBtMCkKYGBgCgpNYWtpbmcgdGhlIGZpcnN0IHJvdyBvZiBuYW1lcwpgYGB7cn0KY25hbWVzPC0gc3Ryc3BsaXQoY25hbWVzLCAifCIsIGZpeGVkID0gVCkKbmFtZXMocG0wKTwtbWFrZS5uYW1lcyhjbmFtZXNbWzFdXVt3Y29sXSkKCmBgYApUaGUgbWVhc3VyZW1lbnRzIG9mIHBhcnRpY3VsYXRlIG1hdHRlciAocG0yNSkgYXJlIGluIHRoZSBjb2x1bW4gbmFtZWQKU2FtcGxlLlZhbHVlLiBBc3NpZ24gdGhpcyBjb21wb25lbnQgb2YgcG0wIHRvIHRoZSB2YXJpYWJsZSB4MApgYGB7cn0KeDA8LXBtMCRTYW1wbGUuVmFsdWUKYGBgCldoYXQgcGVyY2VudGFnZSBvZiB2YWx1ZXMgYXJlIG1pc3NpbmcgaW4gdGhpcyB2ZWN0b3I/CmBgYHtyfQptZWFuKGlzLm5hKHgwKSkKYGBgClNhbWUgYWN0aW9ucyBmb3IgMjAxMiBkYXRhCmBgYHtyfQpuYW1lcyhwbTEpPC1tYWtlLm5hbWVzKGNuYW1lc1tbMV1dW3djb2xdKQp4MTwtcG0xJFNhbXBsZS5WYWx1ZQptZWFuKGlzLm5hKHgxKSkKYGBgCgpgYGB7cn0Kc3VtbWFyeSh4MCkKc3VtbWFyeSh4MSkKYGBgCgpgYGB7cn0KYm94cGxvdCh4MCx4MSkKYm94cGxvdChsb2cxMCh4MCksIGxvZzEwKHgxKSkKYGBgCgpBTW91bnQgb2YgbmVnYXRpdmUgdmFsdWVzCmBgYHtyfQpuZWdhdGl2ZSA8LSB4MTwwCnN1bShuZWdhdGl2ZSwgbmEucm0gPSBUUlVFKQptZWFuKG5lZ2F0aXZlLCBuYS5ybSA9IFRSVUUpCmBgYApXaGVuIGRvZXMgdGhlIG5lZ2F0aXZlIGRhdGEgb2NjdXJlPwoKYGBge3J9CmRhdGVzPC1wbTEkRGF0ZQpkYXRlczwtYXMuRGF0ZShhcy5jaGFyYWN0ZXIoZGF0ZXMpLCAiJVklbSVkIikKaGlzdChkYXRlc1tuZWdhdGl2ZV0sICJtb250aCIpCmBgYAoKQmlkaW5nIGNvdW50eSBhbmQgbW9uaXRvcnMgdG9nZXRoZXIsICBXZSBzZWUgdGhhdCAxMCBtb25pdG9ycyBpbiBOZXcgWW9yayBTdGF0ZSB3ZXJlIGFjdGl2ZSBpbiBib3RoIDE5OTkgYW5kIDIwMTIuCmBgYHtyfQpzdHIoc2l0ZTApCnN0cihzaXRlMSkKYm90aDwtaW50ZXJzZWN0KHNpdGUwLCBzaXRlMSkKYGBgCgpDcmVhdGluZyB2YXIgd2l0aCBOWSBjb3VudHkgYW5kIG1vbml0b3JzIAoKYGBge3J9CmNudDAgPC0gc3Vic2V0KHBtMCwgU3RhdGUuQ29kZSA9PSAzNiAmIGNvdW50eS5zaXRlICVpbiUgYm90aCkKY250MSA8LSBzdWJzZXQocG0xLCBTdGF0ZS5Db2RlID09IDM2ICYgY291bnR5LnNpdGUgJWluJSBib3RoKQoKYGBgCgpUaGlzIHdpbGwgc3BsaXQgY250MCBpbnRvIHNldmVyYWwgZGF0YSBmcmFtZXMgYWNjb3JkaW5nIHRvIGNvdW50eS5zaXRlCih0aGF0IGlzLCBtb25pdG9yIElEcykgYW5kIHRlbGwgdXMgaG93IG1hbnkgbWVhc3VyZW1lbnRzIGVhY2ggbW9uaXRvciByZWNvcmRlZC4KCmBgYHtyfQpzYXBwbHkoc3BsaXQoY250MCwgY250MCRjb3VudHkuc2l0ZSksIG5yb3cpCnNhcHBseShzcGxpdChjbnQxLCBjbnQxJGNvdW50eS5zaXRlKSwgbnJvdykKCmBgYAoKV2Ugd2FudCB0byBleGFtaW5lIGEgbW9uaXRvciB3aXRoIGEgcmVhc29uYWJsZSBudW1iZXIgb2YgbWVhc3VyZW1lbnRzIHNvIGxldCdzIGxvb2sgYXQgdGhlIG1vbml0b3Igd2l0aCBJRCA2My4yMDA4LgpgYGB7cn0KcG0wc3ViPC1zdWJzZXQoY250MCwgQ291bnR5LkNvZGU9PSA2MyAmIFNpdGUuSUQgPT0gMjAwOCApCnBtMXN1Yjwtc3Vic2V0KGNudDEsIENvdW50eS5Db2RlPT0gNjMgJiBTaXRlLklEID09IDIwMDggKQpgYGAKCgpOb3cgd2UnZCBsaWtlIHRvIGNvbXBhcmUgdGhlIHBtMjUgbWVhc3VyZW1lbnRzIG9mIHRoaXMgcGFydGljdWxhciBtb25pdG9yICg2My4yMDA4KSBmb3IgdGhlIDIgeWVhcnMuCmBgYHtyfQp4MHN1YjwtIHBtMHN1YiRTYW1wbGUuVmFsdWUKeDFzdWI8LSBwbTFzdWIkU2FtcGxlLlZhbHVlCmBgYApXZSdkIGxpa2UgdG8gbWFrZSBvdXIgY29tcGFyaXNvbiB2aXN1YWxseSBzbyB3ZSdsbCBoYXZlIHRvIGNyZWF0ZSBhIHRpbWUgc2VyaWVzIG9mIHRoZXNlIHBtMjUgbWVhc3VyZW1lbnRzCgpgYGB7cn0KZGF0ZXMwPC1hcy5EYXRlKGFzLmNoYXJhY3RlcihwbTBzdWIkRGF0ZSksIiVZJW0lZCIgKQpkYXRlczE8LWFzLkRhdGUoYXMuY2hhcmFjdGVyKHBtMXN1YiREYXRlKSwiJVklbSVkIiApCmBgYAoKCnBsb3R0aW5nIHRoZSBkaWZmZXJlbmNlCmBgYHtyfQpwYXIobWZyb3c9YygxLDIpLCBtYXIgPSBjKDQsNCwyLDEpKQpwbG90KGRhdGVzMCwgeDBzdWIsIHBjaCA9IDIwKQphYmxpbmUoaCA9IG1lZGlhbih4MHN1YiwgbmEucm0gPSBUUlVFKSxsd2Q9MikKcGxvdChkYXRlczEsIHgxc3ViLCBwY2ggPSAyMCkKYWJsaW5lKGggPSBtZWRpYW4oeDFzdWIsIG5hLnJtID0gVFJVRSksbHdkPTIpCnJuZzwtIHJhbmdlKHgwc3ViLCB4MXN1YiwgbmEucm09VFJVRSkKYGBgCgoKYSBjb21wYXJpc29uIG9mIGFsbCB0aGUgc3RhdGVzJyBtZWFuIHBvbGx1dGlvbiBsZXZlbHMuIAoKYGBge3J9Cm1uMCA8LSB3aXRoKHBtMCx0YXBwbHkoU2FtcGxlLlZhbHVlLFN0YXRlLkNvZGUsbWVhbixuYS5ybT1UUlVFKSkKbW4xIDwtIHdpdGgocG0xLHRhcHBseShTYW1wbGUuVmFsdWUsU3RhdGUuQ29kZSxtZWFuLG5hLnJtPVRSVUUpKQpgYGAKCmBgYHtyfQpkMDwtZGF0YS5mcmFtZShzdGF0ZT1uYW1lcyhtbjApLCBtZWFuID0gbW4wKQpkMTwtZGF0YS5mcmFtZShzdGF0ZT1uYW1lcyhtbjEpLCBtZWFuID0gbW4xKQptcmc8LW1lcmdlKGQwLGQxLCBieSA9ICJzdGF0ZSIpCmRpbShtcmcpCmBgYApQbG90dGluZyB0aGUgcmVzdWx0cwpgYGB7cn0Kd2l0aChtcmcsIHBsb3QocmVwKDEsIDUyKSwgbXJnWywgMl0sIHhsaW0gPSBjKC41LCAyLjUpKSkjcG9pbnRzCndpdGgobXJnLCBwb2ludHMocmVwKDIsIDUyKSwgbXJnWywgM10pKSNwb2ludHMKc2VnbWVudHMocmVwKDEsIDUyKSwgbXJnWywgMl0sIHJlcCgyLCA1MiksIG1yZ1ssIDNdKSNjb25uZWN0IHRoZSBkb3RzCmBgYAoKYGBge3J9Cm1yZ1ttcmckbWVhbi54IDwgbXJnJG1lYW4ueSxdCmBgYAoK