我试图从这个站点使用R来刮取数据:http: //www.soccer24.com/kosovo/superliga/results/#
我可以做以下事情:
library(rvest)
doc <- html("http://www.soccer24.com/kosovo/superliga/results/")
Run Code Online (Sandbox Code Playgroud)
但我很难知道如何获取数据.这是因为网站上的实际数据似乎是由Javascript生成的.我能做的是
html_text(doc)
Run Code Online (Sandbox Code Playgroud)
但是这给了很长时间的奇怪文本模糊(这确实包含了数据,但是散布着奇怪的代码,而且根本不清楚我将如何解析它.
我要提取的是所有比赛的比赛数据(日期,时间,球队,结果).此站点不需要其他数据.
任何人都可以提供一些关于如何从该网站提取数据的提示吗?
我经常需要在另一个函数内创建一个函数调用,然后进行评估.我倾向于使用eval(parse(text = "what_needs_to_be_done"))
,使用构造的文本paste0().但是,这并不是一种好方法.这是一个例子:
select_data <- function(x, A = NULL, B = NULL, C = NULL) {
kall <- as.list(match.call())
vars <- names(kall)[names(kall) %in% c("A", "B", "C")]
selection_criteria <- paste0(vars, " == ", kall[vars], collapse = ", ")
txt <- paste0("dplyr::filter(x, ", selection_criteria, ")")
res <- eval(parse(text = txt))
return(res)
}
DF <- data.frame(A = c(1,1,2,2,3,3), B = c(1,2,1,2,1,2), C = c(1,1,1,2,2,2))
select_data(DF, A = 2, C = 2)
Run Code Online (Sandbox Code Playgroud)
这只是一个例子,在大多数情况下,要构建的功能更复杂和更广泛.但是,该示例显示了一般问题.我现在做的首先paste0是函数调用,我在控制台输入它然后评估它的方式.
我已经篡改了与替代办法substitute,lazyeval, …
R-3.1.1,Win7x64
嗨,我有数据,其中测量两个变量,使得X从0到70运行,Y从0到100运行.我想做一个简单的观察散点图.散点图应该被尺寸化,使得x轴(从0-70运行)是y轴的大小(从0到100).
我使用以下代码
plot.new()
plot(0, 0, asp = 1, xlim = c(0, 70), ylim = c(0, 100), xlab = "", ylab = "", type = "n")
Run Code Online (Sandbox Code Playgroud)
我很惊讶地发现这会产生如下图表:

有两件事不是我的预期:1)x轴和y轴不限于它们的xlim和ylim值.(为什么?)和2)这个数字几乎是正方形.
我可以通过在使用代码之前手动调整R窗口或Rstudio窗口的大小来手动调整图形,但这是不可行的,因为我有很多要绘制的数字,许多具有不同的xlim和ylim大小,这些数字需要之后插入预先格式化的报告中(这就是为什么他们需要满足这些确切的布局要求).我也试过用
dev.new(width = 7, height = 10)
Run Code Online (Sandbox Code Playgroud)
但这也没有帮助.
我的问题是:1)我如何"强制"将数字限制为传递给函数的确切xlim和ylim范围?2)如何生成具有精确相对尺寸的图形(x轴是y轴长度的.7倍)
这可能很简单,但我无法在任何地方找到答案......
当我使用以下代码时
library("nycflights13")
result <- flights %>%
dplyr::select(year:day, hour, origin, dest, tailnum, carrier) %>%
dplyr::left_join(airlines)
Run Code Online (Sandbox Code Playgroud)
以下评论在屏幕上回显:
> Joining by: "carrier"
Run Code Online (Sandbox Code Playgroud)
这在交互式会话中肯定是有用的信息,但是当我left_join作为较长脚本的一部分使用时,我通常不希望回应这种类型的注释(尤其是当脚本通过knitr生成html报告时,因为该html然后还将包含一条印刷Joining by: "carrier"线.
如何阻止left_join(等)打印此评论?
谢谢,彼得
我试图提取以下信息:
在页面上
http://epl.squawka.com/stoke-city-vs-arsenal/01-03-2014/english-barclays-premier-league/matches
按下红色的"完整统计"按钮会打开一个菜单,其中包括(在左侧)按钮"十字架".这将在屏幕的右侧打开一个足球场的图像,上面有19个箭头,这些是斯托克在斯托克 - 阿森纳比赛中的传球.它们是彩色编码的,红色=未完成,绿色=完成,黄色=键通过.当你点击箭头时,它会告诉你谁给了传球以及在什么时间比赛.此外,箭头显示了球员在传球时的位置以及球员传球的位置.
我希望能够抓取这个页面,以便我得到一个包含列的表:
球队; 名称的发送者; 位置的发送者; 位置的接收器; 分钟; 颜色的箭头
这是斯托克的一套交叉传球,我也想为阿森纳自动重复一遍(因此,上表中的"俱乐部"栏目).
虽然我过去曾经抓过网页,但这些都是静态相当直接的页面,我对于如何从这个页面中删除信息完全傻了.我真的很感谢如何刮取我刚才描述的数据.我精通R,所以我特别感谢能帮助我在R中实现这一目标的代码,但我也非常感谢使用其他语言或软件的帮助.
谢谢你,彼得
我有一个简单的数据结构:案例是国家,每个国家我有几个数字变量.像这样:
dat <- data.frame(country = c("Belgium", "Germany", "Holland", "Ireland"), Var1 = 1:4, Var2 = 11:14)
print(dat, row.names = FALSE)
country Var1 Var2
Belgium 1 11
Germany 2 12
Holland 3 13
Ireland 4 14
Run Code Online (Sandbox Code Playgroud)
该表格需要格式化,标题为粗体,行颜色为灰色或白色,交替显示.
现在,我想要的是在"country"和"Var1"之间添加两个额外的列.第一个新列称为"标志",应包含国家/地区的标志.第二个新专栏被称为"被标记",其中包含一个红旗的图像,该国家在特定的人权问题上得分非常糟糕,如果得分平庸则没有其他方面的橙旗.
如何在R中创建一个以这种方式打印的对象?如何在这种布局中将图像与数据相结合?
(最终这将是创建的更大文档的一部分knitr)
我正在尝试用 R 编写一个脚本来下载几部 youtube 电影。这是其中之一:https : //www.youtube.com/watch?v=nHm8otvMVTs(我从一个课程页面来到这个 youtube 页面,该页面提供了指向本课程中所有视频的 youtube 链接,所以我的脚本将遵循该组链接,转到相应的 youtube 页面,并获取 mp4)。
尽管我在 stackoverflow(和其他地方)上找到了一些关于如何检索视频的实际链接的讨论,但我仍然完全不知道如何自动找到它。(此外,我一直看到 youtube 最近更改了其系统的评论,因此大多数这些解决方案无论如何都不再起作用)。我所需要的只是能够识别 youtube html 页面上的实际链接(我用正则表达式找到了,所以一旦我知道要查找什么,我就可以为多个 youtube 电影自动化它)。所以主要问题仍然存在:我怎样才能找到像这样的 youtube 页面的 mp4 的实际链接:https : //www.youtube.com/watch?v=nHm8otvMVTs或https://www.youtube.com/watch ?v=BO6XJSaFYzk 我很感激这方面的任何帮助,谢谢。
我有一个分位数回归模型,我有兴趣估计.25,.5和.875分位数的效果.我的模型中的系数彼此不同,其方式符合我的模型的实质性实质理论.
下一步是测试一个分位数的特定解释变量的系数是否与另一个分位数的估计系数显着不同.我该如何测试?此外,我还想测试给定分位数的该变量的系数是否与OLS模型中的estimnate显着不同.我怎么做?
我对任何答案感兴趣,虽然我更喜欢一个涉及R的答案.这里有一些测试代码:(注意:这不是我的实际模型或数据,但是一个简单的例子,因为数据在R安装中可用)
data(airquality)
library(quantreg)
summary(rq(Ozone ~ Solar.R + Wind + Temp, tau = c(.25, .5, .75), data = airquality, method = "br"), se = "nid")
tau: [1] 0.25
Coefficients:
Value Std. Error t value Pr(>|t|)
(Intercept) -69.92874 12.18362 -5.73957 0.00000
Solar.R 0.06220 0.00917 6.77995 0.00000
Wind -2.63528 0.59364 -4.43918 0.00002
Temp 1.43521 0.14363 9.99260 0.00000
Call: rq(formula = Ozone ~ Solar.R + Wind + Temp, tau = c(0.25, 0.5,
0.75), data = airquality, method = "br")
tau: [1] 0.5 …Run Code Online (Sandbox Code Playgroud) 我有一个像这样的数据框:
data.frame(matrix(c(11:13, 21:23, 11:13, 11:13, 31:33, 41:43, 31:33), byrow = TRUE, ncol = 3))
Run Code Online (Sandbox Code Playgroud)
现在我想知道哪一行是哪一行的重复项,返回具有重复行号最低的索引向量。如果一行不是前一行的重复项,则它应该获取下一个可用索引。在此示例中,输出应为:
c(1, 2, 1, 1, 3, 4, 3)
Run Code Online (Sandbox Code Playgroud)
我可以通过循环所有行对来实现这一点,但必须有一种有效的方法来做到这一点。
不幸的是,duplicated只显示哪些行是重复的,但不显示它们到底重复的是哪一行。有什么功能可以帮助这里吗?
我有一个data.frame DF如下:
u <- c(14381, 20547, 17172, 17753, 667, 17753, 914, 10802, 3346, 17753,
667, 11113, 914, 914, 17753, 11113, 10802, 20547, 14381, 11113,
139, 17753, 17172, 10802, 14381, 20547, 139, 14381, 17753, 10802,
10802, 139, 11113, 10802, 11113, 3346, 11113, 11113, 11113, 10802,
17172, 20547, 914, 17172, 3346, 139, 11113, 139, 914, 10802,
14381, 10802, 17172, 10802, 3346, 17172, 10802, 20547, 15679, 17753,
11113, 11113, 667, 15679, 667, 1204, 355, 1204, 400, 14351,
16405, 12760, 16405, 12760, 11072, 1204, …Run Code Online (Sandbox Code Playgroud) r ×10
dplyr ×3
dataframe ×2
knitr ×2
web-scraping ×2
data.table ×1
python ×1
python-2.7 ×1
quantile ×1
quantreg ×1
regression ×1
rselenium ×1
rvest ×1
statistics ×1
youtube ×1