我有一个时间序列数据,如下所示。
keyword byMonth n_views
business tax preparation software Dec-2016 5
corporate income tax solution Nov-2016 3
corporate income tax solution Mar-2017 2
corporate tax provision Dec-2016 5
corporate tax provision Oct-2016 1
data collection Mar-2017 39
data collection May-2017 26
data collection Apr-2017 22
data collection Feb-2017 15
data collection Jan-2017 15
data collection Nov-2016 13
data collection Dec-2016 7
data collection Oct-2016 6
我想使用dplyr或任何其他方便的方法仅选择2016年10月至2017年5月期间的那些keywords
。因此,在这种情况下,只有与Keyword: data collection
相关的观察结果应该是输出。我很难搞清楚这一点。非常感谢。
答案 0 :(得分:2)
我们可以使用dplyr
和tidyr
中的功能。 dt2
中的关键字是具有完整月份覆盖率的案例。
library(dplyr)
library(tidyr)
dt2 <- dt %>%
# Spread the data frame
spread(byMonth, n_views) %>%
# Filter rows without any NA
filter(rowSums(!is.na(.)) == ncol(.))
如果需要原始格式,我们可以使用gather
将其转换回来。
dt3 <- dt2 %>%
gather(byMonth, n_views, -keyword)
dt <- read.table(text = " keyword byMonth n_views
'business tax preparation software' 'Dec-2016' 5
'corporate income tax solution' 'Nov-2016' 3
'corporate income tax solution' 'Mar-2017' 2
'corporate tax provision' 'Dec-2016' 5
'corporate tax provision' 'Oct-2016' 1
'data collection' 'Mar-2017' 39
'data collection' 'May-2017' 26
'data collection' 'Apr-2017' 22
'data collection' 'Feb-2017' 15
'data collection' 'Jan-2017' 15
'data collection' 'Nov-2016' 13
'data collection' 'Dec-2016' 7
'data collection' 'Oct-2016' 6",
header = TRUE, stringsAsFactors = FALSE)