首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用来自网站的文本创建数据帧

使用来自网站的文本创建数据帧
EN

Stack Overflow用户
提问于 2020-10-16 01:07:59
回答 1查看 49关注 0票数 1

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

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

以下是数据的一部分:

代码语言:javascript
运行
复制
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来创建数据框,其中一列是Name,第二列是Height (以cm为单位),第三列是Gender。

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

有没有一种方法可以使用给定的数据在R中制作数据帧?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-16 01:51:16

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

代码语言:javascript
运行
复制
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  
#> ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64376566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档