【发布时间】:2015-11-06 13:41:47
【问题描述】:
问题:需要在按名称分组的同一列中用非 NA 值填写 NA。
数据:
Name Date
Bob <NA>
Bob 2015-11-01
Bob <NA>
Bob <NA>
Ant <NA>
Ant <NA>
Ant 2015-11-03
Ant <NA>
Ted 2015-11-04
Ted <NA>
Ted <NA>
Ted <NA>
期望的结果:
Name Date Date.Combined
Bob <NA> 2015-11-01
Bob 2015-11-01 2015-11-01
Bob <NA> 2015-11-01
Bob <NA> 2015-11-01
Ant <NA> 2015-11-03
Ant <NA> 2015-11-03
Ant 2015-11-03 2015-11-03
Ant <NA> 2015-11-03
Ted 2015-11-04 2015-11-04
Ted <NA> 2015-11-04
Ted <NA> 2015-11-04
Ted <NA> 2015-11-04
Date列中的日期不是固定的,是随机的, (鲍勃[2]、蚂蚁[3]、泰德[1])。对于同一用户,它们可能会出现多次,但该用户的日期将始终相同。
我的逻辑:
按名称分组,将日期列中的NAs 替换为非NAs。
尝试 1
df %>%
group_by(name) %>%
mutate(Date.Combined = !is.na(Date))
然后尝试
df %>%
group_by(name) %>%
mutate(Date.Combined = ifelse(is.na(Date), !is.na(Date), !is.na(Date))
但这些只给了我TRUE/FALSE,而不是实际日期。
问题1 - 如何找到非NA 列的值而不是获取TRUE/FALSE。
问题 2 - replace 是否比 ifelse 更合适?
【问题讨论】: