将列名称跨10列移动

时间:2018-10-27 20:17:47

标签: r plyr rvest

我有以下代码来导入一些数据。

url <- "https://finance.yahoo.com/industry/Scientific_Technical_Instruments"

library(rvest)

read <- read_html(url) %>%
  html_table() 

library(plyr)

data <- ldply(read, data.frame)

但是,当数据只应有10个时,数据创建了一个20列的数据框。该数据框的列名尚未按原样导入,并创建了许多NA值。

R中是否有一种方法可以移动列名,然后删除创建的NA列?

2 个答案:

答案 0 :(得分:1)

您的对象read是一个列表,其中标头为第一个元素,数据为第二个元素。您的问题是read[[1]]中的列名不是数据框列的语法有效名称。

您需要使用make.names来清理姓名。例如

data <- data.frame(read[[2]]) 
names(data) <- make.names(names(read[[1]])

可以从here中找到单线版本。

data <- setNames(data.frame(read[[2]]), make.names(names(read[[1]])))

答案 1 :(得分:1)

my_data <- data.frame(read[[2]])
colnames(my_data) <- colnames(read[[1]])