【发布时间】:2015-08-05 22:17:23
【问题描述】:
我有一个暗 17000 x 3 的步行数据的数据框“dat”。间隔列是每 24 小时周期的 5 分钟间隔,日期列是日期,步数列是在所述日期的所述 5 分钟周期内采取的步数。存在 NA。
> head(df1)
steps date interval
1 NA 2012-10-01 0
2 NA 2012-10-01 5
3 NA 2012-10-01 10
4 NA 2012-10-01 15
5 NA 2012-10-01 20
6 NA 2012-10-01 25
我使用 dplyr 将我的 df 按日期分组,然后创建了一个新的 df 'df.1' 并将其总结为 avg=mean(df.1$steps, na.rm =真的)。这给了我每个日期步数平均值的一个不错的小 df
date avg
1 2012-10-01 NaN
2 2012-10-02 0.43750
3 2012-10-03 39.41667
4 2012-10-04 42.06944
5 2012-10-05 46.15972
6 2012-10-06 53.54167
我想做的是用每个日期的平均值更新我原来的 df 的 NA 值。
因此,在 2012-10-02 为 NA 的第一个表中,我想将 2012-10-02 表一中的任何 NA 值替换为值 0.43750。我试过使用索引,%in%,适用于家庭,但找不到任何坚持的东西。
任何帮助将不胜感激。
【问题讨论】:
-
你试过
merge。此外,如果您使用过dplyr,则可以选择mutate将列添加到原始数据集中,而不是summarise -
所以也许使用行名或索引值并合并类似的索引值?
-
可能是
library(dplyr); df1 %>% group_by(date) %>% mutate(avg= mean(steps, na.rm=TRUE)) -
我已经有了那个位(计算的平均值)。然后我需要用给定日期的平均值更新原始 df 中的每个 NA 值。
-
我的意思是您不需要创建第二个数据集,而是可以通过
mutate一步完成。如果需要,则merge(df1, df1.1, by='date', all=TRUE),然后按新列逐步更改NA值
标签: r missing-data