r - 将两列中的数据合并为一列更改日期格式
问题描述
在数据框中,两列(fech_A 和 fech_B)包含不同原因的死亡日期。
fech_A fech_B
1 8-02-06 <NA>
2 <NA> 8-11-18
3 9-03-14 <NA>
4 9-03-05 <NA>
5 <NA> 9-08-11
我想将非 NA 日期合并到一个新列 fech_C 中。有了以前发表的评论中的答案,我的代码是
fech_A <- as.Date(c("8-02-06",NA,"9-03-14","9-03-05",NA),format="%d/%m/%Y")
fech_B <- as.Date(c(NA,"8-11-18",NA,NA,"9-08-11"),format="%d/%m/%Y")
calend1 <- data_frame(fech_A,fech_B)
fech_C <- with(calend1,ifelse(is.na(fech_A),fech_A,fech_B)
但新列以数字格式显示:
[1] -716570 -716284 -716168 -716177 -716018
如何格式化新列中的数据以显示为日期?
解决方案
您可以通过逐行应用来执行此操作。我已经重写了您的示例以修复错误:
fech_A <- as.Date(c("8-02-06",NA,"9-03-14","9-03-05",NA),format="%d-%m-%y")
fech_B <- as.Date(c(NA,"8-11-18",NA,NA,"9-08-11"),format="%d-%m-%y")
calend1 <- data_frame(fech_A,fech_B)
apply(calend1, 1, function(x) if (is.na(x['fech_A'])) {
x['fech_B']
} else {
x['fech_A']
})
[1] "2006-02-08" "2018-11-08" "2014-03-09" "2005-03-09" "2011-08-09"
我确信有一种更好的方法可以将列合并在一起,但这在基础 R 中工作得很好,并且apply
尊重日期的数据类型。
推荐阅读
- cas - 如果 X.509 用户未注册,则阻止 CAS 身份验证
- c++ - 当顶点在 for 循环中时 glDrawElements 不绘制
- r - geom_mosaic() 中的 product() 不接受 R Shiny 上的反应输入?
- c++ - 如何在不污染缓存的情况下读取大量数据?
- hadoop - 为什么hadoop对于一个简单的hello world工作很慢
- xaml - Xamarin Forms:我可以制作一个可以由不同页面动态更改的自定义模板吗?
- python - 将永久参数添加到日志记录
- tcl - 期望 - 期望输出比较
- java - tilepane javafx中相同大小的按钮
- c# - 打开表单时,DataGridView 的 DataEnter 被击中两次?