【问题标题】:Boolean is transformed to Date R布尔值转换为日期 R
【发布时间】:2021-08-23 10:25:41
【问题描述】:

我有一个包含不同列的大 excel 文件 (xls)。使用“read_xls”读入时,包含“是”或“否”的列将转移到 1899-12-31 或 1900-01-01。 在 Excel 文件中,当我单击列时,它们为 0 或 1,但显示为“是”或“否”。 我的目标是让他们在 R 中也说“是”或“否”或“真”“假”。

有什么建议吗?

谢谢

【问题讨论】:

  • 您可以使用read_xlscol_type 参数为每​​列定义列类型。使用它还可以防止read_xls 猜测类型。
  • 感谢您的回答。有没有其他方法可以解决这个问题?这意味着在我的情况下指定大约 100 列...
  • 是否所有“是”/“否”值都转换为“1899-12-30”和“1900-01-01”?
  • 是的,在每一列中都会在 excel 中显示“是”/“否”。

标签: r tidyverse readxl


【解决方案1】:

假设您的 data.frame 被命名为 df 并且包含应该是布尔变量的列被命名为 bool_var。你可以试试这个:

lookup <- c("1900-01-01" = "Yes", "1899-12-30" = "No")

df$bool_var <- lookup[as.character(df$bool_var)]

例如,这个转换

df$bool_var <- lookup[as.character(df$var)]

返回

          var bool_var
1  1899-12-30       No
2  1899-12-30       No
3  1899-12-30       No
4  1899-12-30       No
5  1900-01-01      Yes
6  1900-01-01      Yes
7  1900-01-01      Yes
8  1900-01-01      Yes
9  1899-12-30       No
10 1900-01-01      Yes

如果需要转换的列不止一列,并且您通过列名知道它们,则可以使用

df %>% 
  mutate(across(c(var), ~lookup[as.character(.x)]))

c(var) 替换为c(col_name1, col_name2, col_name3, ...)

【讨论】:

    猜你喜欢
    • 2021-06-27
    • 2018-01-24
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    • 2020-12-23
    • 2016-04-27
    • 2012-02-25
    相关资源
    最近更新 更多