【问题标题】:Convert Factors in 2 Data Frames of a List into Numeric将列表的 2 个数据框中的因子转换为数值
【发布时间】:2014-06-15 16:00:06
【问题描述】:

我无法将列表中的 2 个数据框的列转换为数字。现在两个数据框都有两列由因子组成。我想将它们转换为数字,以便我可以对它们进行数学运算。下面是示例代码:

library(XML)

bal <- "http://www.baseball-reference.com/teams/BAL/2014-schedule-scores.shtml"
bos <- "http://www.baseball-reference.com/teams/BOS/2014-schedule-scores.shtml"

mylist <- list(bal, bos)

a <- lapply(mylist, readHTMLTable)
b <- lapply(a, function(x) x[["team_schedule"]][, c("R", "RA")])
c <- as.numeric(as.character(b))

当我运行这段代码时,我得到:

> c
[1] NA NA
> str(c)
 num [1:2] NA NA

这是b的结构:

> str(b)
List of 2
 $ :'data.frame':   165 obs. of  2 variables:
  ..$ R : Factor w/ 13 levels "","0","10","11",..: 6 6 7 8 10 7 6 5 9 2 ...
  ..$ RA: Factor w/ 13 levels "","0","1","10",..: 3 9 7 4 10 3 7 8 7 6 ...
 $ :'data.frame':   166 obs. of  2 variables:
  ..$ R : Factor w/ 10 levels "","0","1","2",..: 3 8 6 4 8 2 7 9 6 3 ...
  ..$ RA: Factor w/ 13 levels "","1","10","14",..: 5 5 6 9 10 7 2 3 5 7 ...

我应该怎样做才能将因子转换为数值?

【问题讨论】:

  • 在这种情况下不是@RichardScriven

标签: r list dataframe factors


【解决方案1】:

您需要使用 lapply。在“b”上做一个str

str(b)

这会让你知道你有一个包含 2 个 data.frames 的列表。

所以你需要将 lapply 和 sapply 一起使用,以保留数据结构

lapply(b, function(x) sapply(x, function(x) as.numeric(as.character(x))))

您的因子中有 D/N,它将转换为 NA 以及列表条目 是空白/空的

【讨论】:

    猜你喜欢
    • 2018-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多