-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy path15-pieanimate_browserWars_compileData.R
More file actions
46 lines (42 loc) · 1.84 KB
/
15-pieanimate_browserWars_compileData.R
File metadata and controls
46 lines (42 loc) · 1.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
browsers = c("opera", "safari", "explorer", "firefox", "chrome")
browsers_data = lapply(browsers, function(browser){
browser_url = paste0("https://www.w3schools.com/browsers/browsers_", browser, ".asp")
data = rvest::html_table(rvest::read_html(x = browser_url))
data = lapply(data, data.table::setDT)
names(data) = unlist(lapply(data, function(x) colnames(x)[1]))
data = lapply(data, function(x) {colnames(x)[1] = "month"; x})
data = data.table::rbindlist(l = data, use.names = TRUE, fill = TRUE, idcol = "year")
#data = data[,.(year, month, Total)] |> data.table::dcast(formula = month ~ year, value.var = "Total", fill = 0)
data[,.(year, month, Total)]
})
names(browsers_data) = browsers
browsers_data = data.table::rbindlist(l = browsers_data, use.names = TRUE, fill = TRUE, idcol = "browser")
#browsers_data$month = factor(browsers_data$month, levels = month.name)
browsers_data_fixed = lapply(split(browsers_data, browsers_data$year), function(yearly){
yearly = lapply(split(yearly, yearly$month), function(monthly){
if(nrow(monthly) > 0){
if(sum(monthly$Total) < 100){
unknown_brwsr = data.table::data.table(
browser = "Other",
year = monthly$year[1],
month = as.character(monthly$month[1]),
Total = 100 - sum(monthly$Total)
)
monthly = data.table::rbindlist(l = list(monthly, unknown_brwsr), use.names = TRUE, fill = TRUE)
}
}
monthly
})
data.table::rbindlist(l = yearly, use.names = TRUE, fill = TRUE)
})
browsers_data = data.table::rbindlist(l = browsers_data_fixed, use.names = TRUE, fill = TRUE)
browsers_data[, date_obs := paste0(
browsers_data$year,
"-",
factor(
x = browsers_data$month,
levels = month.name,
labels = 1:12
)
)]
data.table::fwrite(x = browsers_data, file = "data/15-pieanimate_browserWars_compileData.tsv", sep = "\t")