【问题标题】:Creating a dataframe with text from a website使用来自网站的文本创建数据框
【发布时间】:2020-10-15 17:07:59
【问题描述】:

有人要求我使用从网站复制的信息在 R 中创建一个数据框;数据不包含在文件中。完整数据列表位于:

https://www.npr.org/2012/12/07/166400760/hollywood-heights-the-ups-downs-and-in-betweens

这是部分数据:

Leading Men (Average American male: 5 feet 9.5 inches)

Dolph Lundgren — 6 feet 5 inches
John Cleese — 6 feet 5 inches
Michael Clarke Duncan — 6 feet 5 inches
Vince Vaughn — 6 feet 5 inches
Clint Eastwood — 6 feet 4 inches
Jimmy Stewart — 6 feet 3 inches
Bill Murray — 6 feet 1.5 inches

Leading Ladies (Average American female: 5 feet 4 inches)

Uma Thurman — 6 feet 0 inches
Brooke Shields — 6 feet 0 inches
Jane Lynch — 6 feet 0 inches

我应该使用 R 创建数据框,其中一列是名称,第二列是高度(以厘米为单位),第三列是性别。

我已将所有数据复制并粘贴到记事本中,手动制作了三个不同的列,并手动将高度转换为厘米。但这是手动创建数据框。

有没有办法使用给定的数据在 R 中制作数据框?

【问题讨论】:

  • 听起来你需要做一些网页抓取。 rvest 包在 R 中很受欢迎,但坦率地说,如果有渲染的 JavaScript,我通常使用 selenium 在 python 中进行网络抓取,或者如果我只是在寻找 HTML,则使用 beautifulsouprequests。有很多在线资源可以开始在 R ex 中进行网络抓取。 analyticsvidhya.com/blog/2017/03/…
  • 查看这个关于赋值的信息:How to assign a value to a variable in r?
  • 确实有帮助。非常感激。我设法通过在 library(tidyverse) 数组之后调用代码并使用命令 ¨**write.csv()**. 来弄清楚导出到文件中

标签: r regex string dataframe web-scraping


【解决方案1】:

您可以复制整个列表,然后使用 read.line 将剪贴板上的文本导入 R。然后使用 您可以从每个部分的标题中提取性别,将其展开到下面的行,然后separate第一列命名和高度。见下文;

web.lines <- read.delim("clipboard", header = F) # reading data from clipboard

library(tidyverse)

web.lines %>% 
  mutate(gender = str_extract(V1, "Leading\\s+\\b(\\w+)\\b")) %>% # extracting gender from headers
  fill(gender , .direction = "down") %>% # filling the gender for all rows
  group_by(gender) %>% 
  slice(-1) %>% # removing the headers
  separate(V1, into = c("Name", "Height"), sep = " — ") # separating name and height


#> # A tibble: 59 x 3
#> # Groups:   gender [2]
#>    Name                  Height             gender        
#>    <chr>                 <chr>              <chr>         
#> 1  Uma Thurman           6 feet 0 inches    Leading Ladies
#> 2  Brooke Shields        6 feet 0 inches    Leading Ladies
#> 3  Jane Lynch            6 feet 0 inches    Leading Ladies
#> 4  Nicole Kidman         5 feet 11 inches   Leading Ladies
#> 5  Tilda Swinton         5 feet 10.5 inches Leading Ladies
#> ...
#> 28 Dolph Lundgren        6 feet 5 inches    Leading Men   
#> 29 John Cleese           6 feet 5 inches    Leading Men   
#> 30 Michael Clarke Duncan 6 feet 5 inches    Leading Men   
#> 31 Vince Vaughn          6 feet 5 inches    Leading Men   
#> 32 Clint Eastwood        6 feet 4 inches    Leading Men  
#> ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    相关资源
    最近更新 更多