我有以下代码来导入一些数据。
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列?
答案 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]])