r - 仅将缺失的信息解释为虚拟变量 R
问题描述
在下面的示例数据框中(原始由数千行和数百列组成),Date1 和 Date2 中的某些值是未知的,它们不需要相关:
Data_Frame <- data.frame(ID = c("A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10"),
Date1 = c("2010-08-03", "2012-11-28", "2009-12-13", "2000-01-15", "2003-03-01", "2015-05-09", "2020-07-11", "unknown", "2011-01-04", "unknown"),
Value = c(2.86, 3.43, 4.65, 6.91, -2.22, 9.92, 23.41, -0.032, 8.84, 10.11),
Date2 = c("unknown", "2015-10-22", "2019-02-14", "2010-11-25", "unknown", "2017-03-12", "2019-09-12", "unknown", "2021-05-14", "2012-08-20"))
我想避免插补,因为它会产生许多人工日期值。此外,为了避免为列中的每个日期值创建虚拟变量(它们以千为单位,并且数据框的大小将迅速增加),创建两列是否有意义,其中 1 是所有日期的条目第二列中不是未知的值,未知值为 0,反之亦然,如下所示:
Data_Frame <- add_column(Data_Frame, Date11 = ifelse(Data_Frame$Date1 != 'unknown', 1, 0), .after = "Date1")
Data_Frame <- add_column(Data_Frame, Date12 = ifelse(Data_Frame$Date1 == 'unknown', 1, 0), .after = "Date11")
Data_Frame <- add_column(Data_Frame, Date21 = ifelse(Data_Frame$Date2 != 'unknown', 1, 0), .after = "Date2")
Data_Frame <- add_column(Data_Frame, Date22 = ifelse(Data_Frame$Date2 == 'unknown', 1, 0), .after = "Date21")
这使
在分析中使用 Date11、Date12、Date21 和 Date22 并删除 Date1 和 Date2 是否有意义?我相信这是错误的。例如,如果在数据预处理期间必须处理因子列中的一个级别以生成虚拟变量而不是所有条目(以避免额外的列)以避免信息丢失,那么如何处理这样的问题?
解决方案
您可以一次处理所有"^Date"
列。将+(.)
逻辑结果强制为整数,as.integer(.)
但您也可以这样说。
res <- data.frame(Data_Frame,
+(Data_Frame[grep('^Date', names(Data_Frame))] == 'unknown'))
res
# ID Date1 Value Date2 Date1.1 Date2.1
# 1 A1 2010-08-03 2.860 unknown 0 1
# 2 A2 2012-11-28 3.430 2015-10-22 0 0
# 3 A3 2009-12-13 4.650 2019-02-14 0 0
# 4 A4 2000-01-15 6.910 2010-11-25 0 0
# 5 A5 2003-03-01 -2.220 unknown 0 1
# 6 A6 2015-05-09 9.920 2017-03-12 0 0
# 7 A7 2020-07-11 23.410 2019-09-12 0 0
# 8 A8 unknown -0.032 unknown 1 1
# 9 A9 2011-01-04 8.840 2021-05-14 0 0
# 10 A10 unknown 10.110 2012-08-20 1 0
推荐阅读
- php - Laravel whereRelation 与另一个数据库连接
- java - 如何创建一个包含可选的哈希图,并在检索它时为我提供值或 Optional.empty 但有限制
- c++ - 在 C++ 中查找数据类型的大小
- python - 检查列表中的特定连续值
- javascript - React - 本地开发和生产构建之间的生命周期行为(componentDidMount)变化
- angular - 如何在 primng 下拉框 Angular 中添加额外的自定义按钮
- sql - 如何在子表的外键列中分配新创建的父ID时,将父子数据从一个数据库复制到另一个数据库?
- javascript - 是否可以将 hasClass() 与 querySelectorAll() 一起使用?
- c++ - 拆分窗口Qt
- flutter - 无法安装flutter_mapbox_navigation-0.0.26