【问题标题】:Shift column names across by 10 columns将列名移动 10 列
【发布时间】:2019-04-01 05:30:00
【问题描述】:

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

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

library(rvest)

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

library(plyr)

data <- ldply(read, data.frame)

但是,数据创建了一个包含 20 列的数据框,而应该只有 10 列。数据框的列名没有按应有的方式导入,并创建了许多 NA 值。

在 R 中有没有办法将列名转移,然后删除创建的 NA 列?

【问题讨论】:

  • 如果您认为其中一个回复对您有所帮助,您能否批准其中一个回复为正确答案?

标签: r plyr rvest


【解决方案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]])))

【讨论】:

  • 哦,我知道现在是什么问题了!
  • 我们的多种方法:setNames(data.frame(read[[2]]), colnames(read[[1]]))
【解决方案2】:
my_data <- data.frame(read[[2]])
colnames(my_data) <- colnames(read[[1]])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 2015-07-19
    • 2020-07-02
    • 1970-01-01
    • 1970-01-01
    • 2021-03-29
    • 2019-03-20
    相关资源
    最近更新 更多